Venom
I believe ad with interesting effect will have lots of fun when browsing. That's why I like to implement <msc-venom />
<msc-venom />
is web component based Ad effect module. It has two types for display. One is vision (image) and the other is moment (video).
Basic Usage
<msc-venom>
is a web component. All we need to do is put the required script into your HTML document. Then follow <msc-venom>
's html structure and everything will be all set.
Required Script
<script async src="https://your-domain/pack-msc-venom.js"> </script>
Structure
Here comes two init ways for different situations. Either way is fine, developers could pick one they like.
- Put the config inside <msc-venom>
as its child. This one could be used for data has already collected. (Such as server-side prepared)
<msc-venom width="2" height="1" layout="responsive" duration="6000"> <script type="application/json"> { "type": "vision", "caption": "your-material-caption", "image": "your-material.png", "srcset": "your-material.png 1x,your-material.png 2x,your-material.png 3x", "loc": "your-material-link" } </script> </msc-venom>
- Client triggerd. (need to prepare a web service for config fetch.)
Note: when init with this way, response data interface must follow <msc-venom />
's format.
<msc-venom width="2" height="1" layout="responsive" duration="6000" src="your-web-service-address" > </msc-venom>
Web Service response format for vision
{ "type": "vision", "caption": "your-material-caption", "image": "your-material.png", "loc": "your-material-link", "srcset": "your-material.png 1x,your-material.png 2x,your-material.png 3x", // optional "width": 200, // optional "height": 100, // optional "duration": 10000, // optional (in milliseconds) "target": "_blank" // optional }
Web Service response format for moment
{ "type": "moment", "caption": "your-material-caption", "videoId": "your-material-videoId", // YouTube videoId only "loc": "your-material-link", "width": 200, // optional "height": 100, // optional "duration": 10000, // optional (in milliseconds) "target": "_blank" // optional }
Style Customization
<msc-venom>
uses CSS variables to style its interface. That means developer could easy change them into the lookup you like.
<style> msc-venom { --ico-close: url("icon-for-close"); --ico-volume: url("icon-for-volume"); } </style>
Attributes
<msc-venom>
supports some attribute to let it become more convenience & useful.
Layout: responsive
Element sized to the width of its container element and resizes its height automatically to the aspect ratio given by width and height attributes.
<msc-venom layout="responsive" width="200" height="100" src="your-web-service-address" />
Layout: fixed
Element has a fixed width and height with no responsiveness supported. (unit: px)
<msc-venom layout="fixed" width="100" height="200" src="your-web-service-address" />
Type: vision
Use image as its material. It will curtain-call automatically when run out duration.
<msc-venom type="vision" width="2" height="1" layout="responsive" duration="6000"> <script type="application/json"> { "caption": "your-material-caption", "image": "your-material.png", "srcset": "your-material.png 1x,your-material.png 2x,your-material.png 3x", "loc": "your-material-link" } </script> </msc-venom>
Type: moment
Use YouTube video as its material. Developers could set duration to force vistors watch the video. (Close button will display only run out duration.)
<msc-venom type="moment" width="2" height="1" layout="responsive" duration="6000"> <script type="application/json"> { "caption": "your-material-caption", "videoId": "your-material-videoId", "loc": "your-material-link" } </script> </msc-venom>
Duration
Developers could set duration for curtain-call (vision) or force visitors watch video (moment). Default is 6000.
- Note: duration's value in milliseconds
<msc-venom layout="responsive" width="200" height="100" src="your-web-service-address" duration="6000" />
Layouts
Type | Width/ height required |
Behavior |
---|---|---|
responsive
|
Yes | Element sized to the width of its container element and resizes its height automatically to the aspect ratio given by width and height attributes. |
fixed
|
Yes | Element has a fixed width and height with no responsiveness supported. |
nodisplay
|
No | Element not displayed. |
Properties
Property Name | Type | Description |
---|---|---|
layout
|
String | Getter for <msc-venom /> 's layout |
width
|
String | Getter for <msc-venom /> 's width |
height
|
String | Getter for <msc-venom /> 's height |
type
|
String | Getter for <msc-venom /> 's type |
duration
|
String | Getter for <msc-venom /> 's duration |
Event
Event Signature | Description |
---|---|
venom-viewed
|
Fired when element's is ready to display. |
venom-clicked
|
Fired when element has been clicked. Use property - detail to trace which part had been clicked. |