github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/public/libs/video-js/video-js.less (about) 1 /*! 2 Video.js Default Styles (http://videojs.com) 3 Version GENERATED_AT_BUILD 4 Create your own skin at http://designer.videojs.com 5 */ 6 7 // To customize the player skin, change the values of the variables or edit the 8 // CSS below. 9 // (This file uses LESS. Learn more at http://lesscss.org/) 10 11 // The base font size controls the size of everything, not just text. All 12 // diminensions use em-based sizes so that the scale along with the font size. 13 // Try increasing it to 20px and see what happens. 14 @base-font-size: 10px; 15 @touch-device-font-size: 15px; 16 17 // The main font color controls the color of the text and the icons (font icons) 18 @main-font-color: #CCCCCC; // e.g. rgb(255, 255, 255) or #ffffff 19 20 // The default color of control backgrounds is mostly black but with a little 21 // bit of blue so it can still be seen on all black video frames, which are 22 // common. 23 @control-bg-color: #07141E; // e.g. rgb(255, 255, 255) or #ffffff 24 @control-bg-alpha: 0.7; // 1.0 = 100% opacity, 0.0 = 0% opacity 25 26 // The slider bar color is used for the progress bar and the volume bar 27 @slider-bar-color: #66A8CC; // e.g. rgb(255, 255, 255) or #ffffff 28 // The background of the progress bar and volume bar have a lined pattern that 29 // is created from a base64 encoded image. You can generate your own pattern at 30 // http://www.patternify.com/ then replace the value in the quotes with your own 31 @slider-bar-pattern: ~'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC'; 32 // The color of the slider background 33 @slider-background-color: #333333; 34 @slider-background-alpha: 0.9; // 1.0 = 100% opacity, 0.0 = 0% opacity 35 36 // The "Big Play Button" is the play button that shows before the video plays. 37 // To center it set the align values to center and middle. The typical location 38 // of the button is the center, but there is trend towards moving it to a corner 39 // where it gets out of the way of valuable content in the poster image. 40 @big-play-align: left; // left, center, or right 41 @big-play-vertical-align: top; // top, middle, or bottom 42 // The button colors match the control colors by default but you can customize 43 // them by replace the variables (@control-bg-color) with your own color values. 44 @big-play-bg-color: @control-bg-color; 45 @big-play-bg-alpha: @control-bg-alpha; 46 // The font size is what makes the big play button, big. All width/height values 47 // use ems, which are a multiple of the font size. 48 // If the @base-font-size is 10px, then 3em equals 30px. 49 @big-play-font-size: 3em; 50 // Now that font size is set, the following em values will be a multiple of the 51 // new font size. If @big-play-font-size is 3em (30px), then setting the any of 52 // the following values to 2em would equal 60px. 2 * font-size 53 @big-play-margin: 0.5em; 54 @big-play-width: 4em; 55 @big-play-height: 2.6em; 56 @big-play-border-radius: 0.8em; 57 @big-play-border-width: 0.1em; 58 @big-play-border-color: #3b4249; 59 60 /* SKIN 61 ================================================================================ 62 The main class name for all skin-specific styles. To make your own skin, 63 replace all occurances of 'vjs-default-skin' with a new name. Then add your new 64 skin name to your video tag instead of the default skin. 65 e.g. <video class="video-js my-skin-name"> 66 */ 67 .vjs-default-skin { 68 color: @main-font-color; 69 } 70 71 /* Custom Icon Font 72 -------------------------------------------------------------------------------- 73 The control icons are from a custom font. Each icon corresponds to a character 74 (e.g. "\e001"). Font icons allow for easy scaling and coloring of icons. 75 */ 76 @font-face{ 77 font-family: 'VideoJS'; 78 src: url('font/vjs.eot'); 79 src: url('font/vjs.eot?#iefix') format('embedded-opentype'), 80 url('font/vjs.woff') format('woff'), 81 url('font/vjs.ttf') format('truetype'), 82 url('font/vjs.svg#icomoon') format('svg'); 83 84 font-weight: normal; 85 font-style: normal; 86 } 87 88 // Icon font character values 89 @play-icon: "\e001"; 90 @pause-icon: "\e002"; 91 @volume-muted-icon: "\e003"; 92 @volume-low-icon: "\e004"; 93 @volume-mid-icon: "\e005"; 94 @volume-high-icon: "\e006"; 95 @fullscreen-enter-icon: "\e000"; 96 @fullscreen-exit-icon: "\e00b"; 97 @square-icon: "\e009"; 98 @spinner-icon: "\e00a"; 99 @spinner2-icon: "\e00d"; 100 @spinner3-icon: "\e01e"; 101 @spinner4-icon: "\e01f"; 102 @subtitles-icon: "\e00c"; 103 @captions-icon: "\e008"; 104 @chapters-icon: "\e00c"; 105 @share-icon: "\e00e"; 106 @cog-icon: "\e600"; 107 108 /* Base UI Component Classes 109 -------------------------------------------------------------------------------- 110 */ 111 112 /* Slider - used for Volume bar and Seek bar */ 113 .vjs-default-skin .vjs-slider { 114 /* Replace browser focus hightlight with handle highlight */// 115 outline: 0; 116 position: relative; 117 cursor: pointer; 118 padding: 0; 119 120 .background-color-with-alpha(@slider-background-color, @slider-background-alpha); 121 } 122 123 .vjs-default-skin .vjs-slider:focus { 124 .box-shadow(0 0 2em #fff); 125 } 126 127 .vjs-default-skin .vjs-slider-handle { 128 position: absolute; 129 /* Needed for IE6 */// 130 left: 0; 131 top: 0; 132 } 133 134 .vjs-default-skin .vjs-slider-handle:before { 135 content: @square-icon; 136 font-family: VideoJS; 137 font-size: 1em; 138 line-height: 1; 139 text-align: center; 140 text-shadow: 0em 0em 1em #fff; 141 142 position: absolute; 143 top: 0; 144 left: 0; 145 146 /* Rotate the square icon to make a diamond */// 147 .transform(rotate(-45deg)); 148 } 149 150 /* Control Bar 151 -------------------------------------------------------------------------------- 152 The default control bar that is a container for most of the controls. 153 */ 154 .vjs-default-skin .vjs-control-bar { 155 /* Start hidden */// 156 display: none; 157 position: absolute; 158 /* Place control bar at the bottom of the player box/video. 159 If you want more margin below the control bar, add more height. */// 160 bottom: 0; 161 /* Use left/right to stretch to 100% width of player div */// 162 left: 0; 163 right: 0; 164 /* Height includes any margin you want above or below control items */// 165 height: 3.0em; 166 167 .background-color-with-alpha(@control-bg-color, @control-bg-alpha); 168 } 169 170 /* Show the control bar only once the video has started playing */ 171 .vjs-default-skin.vjs-has-started .vjs-control-bar { 172 display: block; 173 /* Visibility needed to make sure things hide in older browsers too. */ 174 visibility: visible; 175 opacity: 1; 176 177 @trans: visibility 0.1s, opacity 0.1s; // Var needed because of comma 178 .transition(@trans); 179 } 180 181 /* Hide the control bar when the video is playing and the user is inactive */ 182 .vjs-default-skin.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar { 183 display: block; 184 visibility: hidden; 185 opacity: 0; 186 187 @trans: visibility 1.0s, opacity 1.0s; 188 .transition(@trans); 189 } 190 191 .vjs-default-skin.vjs-controls-disabled .vjs-control-bar { 192 display: none; 193 } 194 195 .vjs-default-skin.vjs-using-native-controls .vjs-control-bar { 196 display: none; 197 } 198 199 /* The control bar shouldn't show after an error */ 200 .vjs-default-skin.vjs-error .vjs-control-bar { 201 display: none; 202 } 203 204 /* IE8 is flakey with fonts, and you have to change the actual content to force 205 fonts to show/hide properly. 206 - "\9" IE8 hack didn't work for this 207 - Found in XP IE8 from http://modern.ie. Does not show up in "IE8 mode" in IE9 208 */ 209 @ie8screen: ~"\0screen"; 210 .vjs-default-skin.vjs-user-inactive.vjs-playing .vjs-control-bar :before { 211 @media @ie8screen { content: ""; } 212 } 213 214 /* General styles for individual controls. */ 215 .vjs-default-skin .vjs-control { 216 outline: none; 217 position: relative; 218 float: left; 219 text-align: center; 220 margin: 0; 221 padding: 0; 222 height: 3.0em; 223 width: 4em; 224 } 225 226 /* FontAwsome button icons */ 227 .vjs-default-skin .vjs-control:before { 228 font-family: VideoJS; 229 font-size: 1.5em; 230 line-height: 2; 231 position: absolute; 232 top: 0; 233 left: 0; 234 width: 100%; 235 height: 100%; 236 text-align: center; 237 text-shadow: 1px 1px 1px rgba(0,0,0,0.5); 238 } 239 240 /* Replacement for focus outline */ 241 .vjs-default-skin .vjs-control:focus:before, 242 .vjs-default-skin .vjs-control:hover:before { 243 text-shadow: 0em 0em 1em rgba(255, 255, 255, 1); 244 } 245 246 .vjs-default-skin .vjs-control:focus { 247 /* outline: 0; */// 248 /* keyboard-only users cannot see the focus on several of the UI elements when 249 this is set to 0 */ 250 } 251 252 /* Hide control text visually, but have it available for screenreaders */ 253 .vjs-default-skin .vjs-control-text { 254 .hide-visually; 255 } 256 257 /* Play/Pause 258 -------------------------------------------------------------------------------- 259 */ 260 .vjs-default-skin .vjs-play-control { 261 width: 5em; 262 cursor: pointer; 263 } 264 .vjs-default-skin .vjs-play-control:before { 265 content: @play-icon; 266 } 267 .vjs-default-skin.vjs-playing .vjs-play-control:before { 268 content: @pause-icon; 269 } 270 271 /* Playback toggle 272 -------------------------------------------------------------------------------- 273 */ 274 .vjs-default-skin .vjs-playback-rate .vjs-playback-rate-value { 275 font-size: 1.5em; 276 line-height: 2; 277 position: absolute; 278 top: 0; 279 left: 0; 280 width: 100%; 281 height: 100%; 282 text-align: center; 283 text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5); 284 } 285 286 .vjs-default-skin .vjs-playback-rate.vjs-menu-button .vjs-menu .vjs-menu-content { 287 width: 4em; 288 left: -2em; 289 list-style: none; 290 } 291 292 /* Volume/Mute 293 -------------------------------------------------------------------------------- */ 294 .vjs-default-skin .vjs-mute-control, 295 .vjs-default-skin .vjs-volume-menu-button { 296 cursor: pointer; 297 float: right; 298 } 299 .vjs-default-skin .vjs-mute-control:before, 300 .vjs-default-skin .vjs-volume-menu-button:before { 301 content: @volume-high-icon; 302 } 303 .vjs-default-skin .vjs-mute-control.vjs-vol-0:before, 304 .vjs-default-skin .vjs-volume-menu-button.vjs-vol-0:before { 305 content: @volume-muted-icon; 306 } 307 .vjs-default-skin .vjs-mute-control.vjs-vol-1:before, 308 .vjs-default-skin .vjs-volume-menu-button.vjs-vol-1:before { 309 content: @volume-low-icon; 310 } 311 .vjs-default-skin .vjs-mute-control.vjs-vol-2:before, 312 .vjs-default-skin .vjs-volume-menu-button.vjs-vol-2:before { 313 content: @volume-mid-icon; 314 } 315 316 .vjs-default-skin .vjs-volume-control { 317 width: 5em; 318 float: right; 319 } 320 .vjs-default-skin .vjs-volume-bar { 321 width: 5em; 322 height: 0.6em; 323 margin: 1.1em auto 0; 324 } 325 326 .vjs-default-skin .vjs-volume-menu-button .vjs-menu-content { 327 height: 2.9em; 328 } 329 330 .vjs-default-skin .vjs-volume-level { 331 position: absolute; 332 top: 0; 333 left: 0; 334 height: 0.5em; 335 /* assuming volume starts at 1.0 */ 336 width: 100%; 337 338 background: @slider-bar-color 339 url(@slider-bar-pattern) 340 -50% 0 repeat; 341 } 342 .vjs-default-skin .vjs-volume-bar .vjs-volume-handle { 343 width: 0.5em; 344 height: 0.5em; 345 /* Assumes volume starts at 1.0. If you change the size of the 346 handle relative to the volume bar, you'll need to update this value 347 too. */ 348 left: 4.5em; 349 } 350 351 .vjs-default-skin .vjs-volume-handle:before { 352 font-size: 0.9em; 353 top: -0.2em; 354 left: -0.2em; 355 356 width: 1em; 357 height: 1em; 358 } 359 360 .vjs-default-skin .vjs-volume-menu-button .vjs-menu .vjs-menu-content { 361 width: 6em; 362 left: -4em; 363 } 364 365 /* Progress 366 -------------------------------------------------------------------------------- 367 */ 368 .vjs-default-skin .vjs-progress-control { 369 position: absolute; 370 left: 0; 371 right: 0; 372 width: auto; 373 font-size: 0.3em; 374 height: 1em; 375 /* Set above the rest of the controls. */// 376 top: -1em; 377 378 /* Shrink the bar slower than it grows. */// 379 .transition(all 0.4s); 380 } 381 382 /* On hover, make the progress bar grow to something that's more clickable. 383 This simply changes the overall font for the progress bar, and this 384 updates both the em-based widths and heights, as wells as the icon font */ 385 .vjs-default-skin:hover .vjs-progress-control { 386 font-size: .9em; 387 388 /* Even though we're not changing the top/height, we need to include them in 389 the transition so they're handled correctly. */ 390 .transition(all 0.2s); 391 } 392 393 /* Box containing play and load progresses. Also acts as seek scrubber. */ 394 .vjs-default-skin .vjs-progress-holder { 395 height: 100%; 396 } 397 398 /* Progress Bars */ 399 .vjs-default-skin .vjs-progress-holder .vjs-play-progress, 400 .vjs-default-skin .vjs-progress-holder .vjs-load-progress, 401 .vjs-default-skin .vjs-progress-holder .vjs-load-progress div { 402 position: absolute; 403 display: block; 404 height: 100%; 405 margin: 0; 406 padding: 0; 407 /* updated by javascript during playback */ 408 width: 0; 409 /* Needed for IE6 */// 410 left: 0; 411 top: 0; 412 } 413 414 .vjs-default-skin .vjs-play-progress { 415 /* 416 Using a data URI to create the white diagonal lines with a transparent 417 background. Surprisingly works in IE8. 418 Created using http://www.patternify.com 419 Changing the first color value will change the bar color. 420 Also using a paralax effect to make the lines move backwards. 421 The -50% left position makes that happen. 422 */ 423 background: @slider-bar-color 424 url(@slider-bar-pattern) 425 -50% 0 repeat; 426 } 427 .vjs-default-skin .vjs-load-progress { 428 background: rgb(100, 100, 100) /* IE8- Fallback */; 429 background: rgba(255, 255, 255, 0.2); 430 } 431 432 /* there are child elements of the load progress bar that represent the 433 specific time ranges that have been buffered */ 434 .vjs-default-skin .vjs-load-progress div { 435 background: rgb(120, 120, 120) /* IE8- Fallback */; 436 background: rgba(255, 255, 255, 0.1); 437 } 438 439 .vjs-default-skin .vjs-seek-handle { 440 width: 1.5em; 441 height: 100%; 442 } 443 444 .vjs-default-skin .vjs-seek-handle:before { 445 padding-top: 0.1em /* Minor adjustment */; 446 } 447 448 /* Live Mode 449 -------------------------------------------------------------------------------- 450 */ 451 .vjs-default-skin.vjs-live .vjs-time-controls, 452 .vjs-default-skin.vjs-live .vjs-time-divider, 453 .vjs-default-skin.vjs-live .vjs-progress-control { 454 display: none; 455 } 456 .vjs-default-skin.vjs-live .vjs-live-display { 457 display: block; 458 } 459 460 /* Live Display 461 -------------------------------------------------------------------------------- 462 */ 463 .vjs-default-skin .vjs-live-display { 464 display: none; 465 font-size: 1em; 466 line-height: 3em; 467 } 468 469 /* Time Display 470 -------------------------------------------------------------------------------- 471 */ 472 .vjs-default-skin .vjs-time-controls { 473 font-size: 1em; 474 /* Align vertically by making the line height the same as the control bar */// 475 line-height: 3em; 476 } 477 .vjs-default-skin .vjs-current-time { float: left; } 478 .vjs-default-skin .vjs-duration { float: left; } 479 /* Remaining time is in the HTML, but not included in default design */ 480 .vjs-default-skin .vjs-remaining-time { display: none; float: left; } 481 .vjs-time-divider { float: left; line-height: 3em; } 482 483 /* Fullscreen 484 -------------------------------------------------------------------------------- 485 */ 486 .vjs-default-skin .vjs-fullscreen-control { 487 width: 3.8em; 488 cursor: pointer; 489 float: right; 490 } 491 .vjs-default-skin .vjs-fullscreen-control:before { 492 content: @fullscreen-enter-icon; 493 } 494 /* Switch to the exit icon when the player is in fullscreen */ 495 .vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control:before { 496 content: @fullscreen-exit-icon; 497 } 498 499 /* Big Play Button (play button at start) 500 -------------------------------------------------------------------------------- 501 Positioning of the play button in the center or other corners can be done more 502 easily in the skin designer. http://designer.videojs.com/ 503 */ 504 .vjs-default-skin .vjs-big-play-button { 505 // Calculate total width/height so we're able to center the button 506 @total-width: (@big-play-width + (@big-play-border-width * 2)); 507 @total-height: (@big-play-height + (@big-play-border-width * 2)); 508 // Position the button using the absolute-align mixin (bottom of page) 509 .absolute-align(@big-play-align, @big-play-margin, @total-width); 510 .absolute-align(@big-play-vertical-align, @big-play-margin, @total-height); 511 512 font-size: @big-play-font-size; 513 display: block; 514 z-index: 2; 515 position: absolute; 516 width: @big-play-width; 517 height: @big-play-height; 518 text-align: center; 519 vertical-align: middle; 520 cursor: pointer; 521 opacity: 1; 522 523 /* Need a slightly gray bg so it can be seen on black backgrounds */// 524 .background-color-with-alpha(@big-play-bg-color, @big-play-bg-alpha); 525 526 border: @big-play-border-width solid @big-play-border-color; 527 528 .border-radius(@big-play-border-radius); 529 .box-shadow(0px 0px 1em rgba(255, 255, 255, 0.25)); 530 .transition(all 0.4s); 531 } 532 533 /* Optionally center */ 534 .vjs-default-skin.vjs-big-play-centered .vjs-big-play-button { 535 @total-width: (@big-play-width + (@big-play-border-width * 2)); 536 @total-height: (@big-play-height + (@big-play-border-width * 2)); 537 538 .absolute-align(center, @big-play-margin, @total-width); 539 .absolute-align(middle, @big-play-margin, @total-height); 540 } 541 542 /* Hide if controls are disabled */ 543 .vjs-default-skin.vjs-controls-disabled .vjs-big-play-button { 544 display: none; 545 } 546 /* Hide when video starts playing */ 547 .vjs-default-skin.vjs-has-started .vjs-big-play-button { 548 display: none; 549 } 550 /* Hide on mobile devices. Remove when we stop using native controls 551 by default on mobile */ 552 .vjs-default-skin.vjs-using-native-controls .vjs-big-play-button { 553 display: none; 554 } 555 556 .vjs-default-skin:hover .vjs-big-play-button, 557 .vjs-default-skin .vjs-big-play-button:focus { 558 outline: 0; 559 border-color: #fff; 560 /* IE8 needs a non-glow hover state */// 561 background-color: rgb(80, 80, 80); 562 background-color: rgba(50, 50, 50, 0.75); 563 564 .box-shadow(0 0 3em #fff); 565 .transition(all 0s); 566 } 567 568 .vjs-default-skin .vjs-big-play-button:before { 569 content: @play-icon; 570 font-family: VideoJS; 571 /* In order to center the play icon vertically we need to set the line height 572 to the same as the button height */ 573 line-height: @big-play-height; 574 text-shadow: 0.05em 0.05em 0.1em #000; 575 text-align: center /* Needed for IE8 */; 576 577 position: absolute; 578 left: 0; 579 width: 100%; 580 height: 100%; 581 } 582 583 .vjs-error .vjs-big-play-button { 584 display: none; 585 } 586 587 /* Error Display 588 -------------------------------------------------------------------------------- 589 */ 590 591 .vjs-error-display { 592 display: none; 593 } 594 595 .vjs-error .vjs-error-display { 596 display: block; 597 position: absolute; 598 left: 0; 599 top: 0; 600 width: 100%; 601 height: 100%; 602 } 603 604 .vjs-error .vjs-error-display:before { 605 content: 'X'; 606 font-family: Arial; 607 font-size: 4em; 608 color: #666666; 609 /* In order to center the play icon vertically we need to set the line height 610 to the same as the button height */ 611 line-height: 1; 612 text-shadow: 0.05em 0.05em 0.1em #000; 613 text-align: center /* Needed for IE8 */; 614 vertical-align: middle; 615 616 position: absolute; 617 left: 0; 618 top: 50%; 619 margin-top: -0.5em; 620 width: 100%; 621 } 622 623 .vjs-error-display div { 624 position: absolute; 625 bottom: 1em; 626 right: 0; 627 left: 0; 628 629 font-size: 1.4em; 630 text-align: center; 631 padding: 3px; 632 background: rgb(0, 0, 0); // fallback to just black 633 background: rgba(0,0,0,0.5); // Normally show black at 50% opacity 634 } 635 636 .vjs-error-display a, .vjs-error-display a:visited { 637 color: #F4A460; 638 } 639 640 /* Loading Spinner 641 -------------------------------------------------------------------------------- 642 */ 643 644 .vjs-loading-spinner { 645 /* Should be hidden by default */// 646 display: none; 647 648 position: absolute; 649 top: 50%; 650 left: 50%; 651 652 font-size: 4em; 653 line-height: 1; 654 655 width: 1em; 656 height: 1em; 657 658 margin-left: -0.5em; 659 margin-top: -0.5em; 660 661 opacity: 0.75; 662 } 663 664 /* Show the spinner when waiting for data and seeking to a new time */ 665 .vjs-waiting .vjs-loading-spinner, 666 .vjs-seeking .vjs-loading-spinner { 667 display: block; 668 669 /* only animate when showing because it can be processor heavy */// 670 .animation(spin 1.5s infinite linear); 671 } 672 673 /* Errors are unrecoverable without user interaction so hide the spinner */ 674 .vjs-error .vjs-loading-spinner { 675 display: none; 676 677 /* ensure animation doesn't continue while hidden */// 678 .animation(none); 679 } 680 681 .vjs-default-skin .vjs-loading-spinner:before { 682 content: @spinner3-icon; 683 font-family: VideoJS; 684 685 position: absolute; 686 top: 0; 687 left: 0; 688 width: 1em; 689 height: 1em; 690 text-align: center; 691 text-shadow: 0em 0em 0.1em #000; 692 } 693 694 @-moz-keyframes spin { 695 0% { -moz-transform: rotate(0deg); } 696 100% { -moz-transform: rotate(359deg); } 697 } 698 @-webkit-keyframes spin { 699 0% { -webkit-transform: rotate(0deg); } 700 100% { -webkit-transform: rotate(359deg); } 701 } 702 @-o-keyframes spin { 703 0% { -o-transform: rotate(0deg); } 704 100% { -o-transform: rotate(359deg); } 705 } 706 @keyframes spin { 707 0% { transform: rotate(0deg); } 708 100% { transform: rotate(359deg); } 709 } 710 711 /* Menu Buttons (Captions/Subtitles/etc.) 712 -------------------------------------------------------------------------------- 713 */ 714 .vjs-default-skin .vjs-menu-button { 715 float: right; 716 cursor: pointer; 717 } 718 719 .vjs-default-skin .vjs-menu { 720 display: none; 721 position: absolute; 722 bottom: 0; 723 left: 0em; /* (Width of vjs-menu - width of button) / 2 */ 724 width: 0em; 725 height: 0em; 726 margin-bottom: 3em; 727 728 border-left: 2em solid transparent; 729 border-right: 2em solid transparent; 730 731 border-top: 1.55em solid rgb(0, 0, 0); /* Same width top as ul bottom */ 732 border-top-color: rgba(7, 40, 50, 0.5); /* Same as ul background */ 733 } 734 735 /* Button Pop-up Menu */ 736 .vjs-default-skin .vjs-menu-button .vjs-menu .vjs-menu-content { 737 display: block; 738 padding: 0; margin: 0; 739 position: absolute; 740 width: 10em; 741 bottom: 1.5em; /* Same bottom as vjs-menu border-top */ 742 max-height: 15em; 743 overflow: auto; 744 745 left: -5em; /* Width of menu - width of button / 2 */ 746 747 .background-color-with-alpha(@control-bg-color, @control-bg-alpha); 748 .box-shadow(-0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2)); 749 } 750 751 .vjs-default-skin .vjs-menu-button:hover .vjs-menu { 752 display: block; 753 } 754 .vjs-default-skin .vjs-menu-button ul li { 755 list-style: none; 756 margin: 0; 757 padding: 0.3em 0 0.3em 0; 758 line-height: 1.4em; 759 font-size: 1.2em; 760 text-align: center; 761 text-transform: lowercase; 762 } 763 .vjs-default-skin .vjs-menu-button ul li.vjs-selected { 764 background-color: #000; 765 } 766 .vjs-default-skin .vjs-menu-button ul li:focus, 767 .vjs-default-skin .vjs-menu-button ul li:hover, 768 .vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus, 769 .vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover { 770 outline: 0; 771 color: #111; 772 773 .background-color-with-alpha(rgb(255, 255, 255), 0.75); 774 .box-shadow(0 0 1em rgba(255, 255, 255, 1)); 775 } 776 .vjs-default-skin .vjs-menu-button ul li.vjs-menu-title { 777 text-align: center; 778 text-transform: uppercase; 779 font-size: 1em; 780 line-height: 2em; 781 padding: 0; 782 margin: 0 0 0.3em 0; 783 font-weight: bold; 784 cursor: default; 785 } 786 787 /* Subtitles Button */ 788 .vjs-default-skin .vjs-subtitles-button:before { 789 content: @subtitles-icon; 790 } 791 792 /* Captions Button */ 793 .vjs-default-skin .vjs-captions-button:before { 794 content: @captions-icon; 795 } 796 797 /* Chapters Button */ 798 .vjs-default-skin .vjs-chapters-button:before { 799 content: @chapters-icon; 800 } 801 802 .vjs-default-skin .vjs-chapters-button.vjs-menu-button .vjs-menu .vjs-menu-content { 803 width: 24em; 804 left: -12em; 805 } 806 807 /* Replacement for focus outline */ 808 .vjs-default-skin .vjs-captions-button:focus .vjs-control-content:before, 809 .vjs-default-skin .vjs-captions-button:hover .vjs-control-content:before { 810 .box-shadow(0 0 1em rgba(255, 255, 255, 1)); 811 } 812 813 /* 814 REQUIRED STYLES (be careful overriding) 815 ================================================================================ 816 When loading the player, the video tag is replaced with a DIV, 817 that will hold the video tag or object tag for other playback methods. 818 The div contains the video playback element (Flash or HTML5) and controls, 819 and sets the width and height of the video. 820 821 ** If you want to add some kind of border/padding (e.g. a frame), or special 822 positioning, use another containing element. Otherwise you risk messing up 823 control positioning and full window mode. ** 824 */ 825 .video-js { 826 background-color: #000; 827 position: relative; 828 padding: 0; 829 /* Start with 10px for base font size so other dimensions can be em based and 830 easily calculable. */ 831 font-size: @base-font-size; 832 /* Allow poster to be vertially aligned. */ 833 vertical-align: middle; 834 /* display: table-cell; */ /*This works in Safari but not Firefox.*/ 835 836 /* Provide some basic defaults for fonts */ 837 font-weight: normal; 838 font-style: normal; 839 /* Avoiding helvetica: issue #376 */ 840 font-family: Arial, sans-serif; 841 842 /* Turn off user selection (text highlighting) by default. 843 The majority of player components will not be text blocks. 844 Text areas will need to turn user selection back on. */ 845 .user-select(none); 846 } 847 848 /* Playback technology elements expand to the width/height of the containing div 849 <video> or <object> */ 850 .video-js .vjs-tech { 851 position: absolute; 852 top: 0; 853 left: 0; 854 width: 100%; 855 height: 100%; 856 } 857 858 /* Fix for Firefox 9 fullscreen (only if it is enabled). Not needed when 859 checking fullScreenEnabled. */ 860 .video-js:-moz-full-screen { position: absolute; } 861 862 /* Fullscreen Styles */ 863 body.vjs-full-window { 864 padding: 0; 865 margin: 0; 866 height: 100%; 867 /* Fix for IE6 full-window. http://www.cssplay.co.uk/layouts/fixed.html */// 868 overflow-y: auto; 869 } 870 .video-js.vjs-fullscreen { 871 position: fixed; 872 overflow: hidden; 873 z-index: 1000; 874 left: 0; 875 top: 0; 876 bottom: 0; 877 right: 0; 878 width: 100% !important; 879 height: 100% !important; 880 /* IE6 full-window (underscore hack) */// 881 _position: absolute; 882 } 883 .video-js:-webkit-full-screen { 884 width: 100% !important; 885 height: 100% !important; 886 } 887 .video-js.vjs-fullscreen.vjs-user-inactive { 888 cursor: none; 889 } 890 891 /* Poster Styles */ 892 .vjs-poster { 893 background-repeat: no-repeat; 894 background-position: 50% 50%; 895 background-size: contain; 896 cursor: pointer; 897 margin: 0; 898 padding: 0; 899 position: absolute; 900 top: 0; 901 right: 0; 902 bottom: 0; 903 left: 0; 904 } 905 .vjs-poster img { 906 display: block; 907 margin: 0 auto; 908 max-height: 100%; 909 padding: 0; 910 width: 100%; 911 } 912 913 /* Hide the poster when native controls are used otherwise it covers them */ 914 .video-js.vjs-using-native-controls .vjs-poster { 915 display: none; 916 } 917 918 /* Text Track Styles */ 919 /* Overall track holder for both captions and subtitles */ 920 .video-js .vjs-text-track-display { 921 text-align: center; 922 position: absolute; 923 bottom: 4em; 924 /* Leave padding on left and right */// 925 left: 1em; 926 right: 1em; 927 } 928 929 /* Move captions down when controls aren't being shown */ 930 .video-js.vjs-user-inactive.vjs-playing .vjs-text-track-display { 931 bottom: 1em; 932 } 933 934 /* Individual tracks */ 935 .video-js .vjs-text-track { 936 display: none; 937 font-size: 1.4em; 938 text-align: center; 939 margin-bottom: 0.1em; 940 /* Transparent black background, or fallback to all black (oldIE) */// 941 .background-color-with-alpha(rgb(0, 0, 0), 0.5); 942 } 943 .video-js .vjs-subtitles { color: #fff /* Subtitles are white */; } 944 .video-js .vjs-captions { color: #fc6 /* Captions are yellow */; } 945 .vjs-tt-cue { display: block; } 946 947 /* Hide disabled or unsupported controls */ 948 .vjs-default-skin .vjs-hidden { display: none; } 949 950 .vjs-lock-showing { 951 display: block !important; 952 opacity: 1; 953 visibility: visible; 954 } 955 956 /* In IE8 w/ no JavaScript (no HTML5 shim), the video tag doesn't register. 957 The .video-js classname on the video tag also isn't considered. 958 This optional paragraph inside the video tag can provide a message to users 959 about what's required to play video. */ 960 .vjs-no-js { 961 padding: 20px; 962 color: #ccc; 963 background-color: #333; 964 font-size: 18px; 965 font-family: Arial, sans-serif; 966 text-align: center; 967 width: 300px; 968 height: 150px; 969 margin: 0px auto; 970 } 971 972 .vjs-no-js a, .vjs-no-js a:visited { 973 color: #F4A460; 974 } 975 976 // MIXINS 977 // ============================================================================= 978 // Mixins are a LESS feature and are used to add vendor prefixes to CSS rules 979 // when needed. 980 981 // https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow 982 .box-shadow (@string: 0 0 1em rgba(0, 0, 0, 0.25)) { 983 /* box-shadow */// 984 -webkit-box-shadow: @string; 985 -moz-box-shadow: @string; 986 box-shadow: @string; 987 } 988 989 // https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius 990 .border-radius (@string: 5px) { 991 /* border-radius */// 992 -webkit-border-radius: @string; 993 -moz-border-radius: @string; 994 border-radius: @string; 995 } 996 997 // https://developer.mozilla.org/en-US/docs/Web/CSS/transition 998 .transition (@string: all 1s linear) { 999 /* transition */// 1000 -webkit-transition: @string; 1001 -moz-transition: @string; 1002 -o-transition: @string; 1003 transition: @string; 1004 } 1005 1006 // https://developer.mozilla.org/en-US/docs/Web/CSS/transition 1007 .transition-delay (@string: 1s) { 1008 /* transition-delay */// 1009 -webkit-transition-delay: @string; 1010 -moz-transition-delay: @string; 1011 -o-transition-delay: @string; 1012 transition-delay: @string; 1013 } 1014 1015 // https://developer.mozilla.org/en-US/docs/Web/CSS/animation 1016 .animation (@string: spin 1s infinite linear) { 1017 /* animation */// 1018 -webkit-animation: @string; 1019 -moz-animation: @string; 1020 -o-animation: @string; 1021 animation: @string; 1022 } 1023 1024 // https://developer.mozilla.org/en-US/docs/Web/CSS/transform 1025 .transform (@string: rotate(-45deg)) { 1026 /* transform */// 1027 -webkit-transform: @string; 1028 -moz-transform: @string; 1029 -ms-transform: @string; 1030 -o-transform: @string; 1031 transform: @string; 1032 } 1033 1034 // https://developer.mozilla.org/en-US/docs/Web/CSS/user-select 1035 .user-select (@string: none) { 1036 /* user-select */// 1037 -webkit-user-select: @string; 1038 -moz-user-select: @string; 1039 -ms-user-select: @string; 1040 user-select: @string; 1041 } 1042 1043 // Hide something visually but keep available for screen readers. 1044 // http://h5bp.com/v 1045 .hide-visually () { 1046 /* hide-visually */// 1047 border: 0; 1048 clip: rect(0 0 0 0); 1049 height: 1px; 1050 margin: -1px; 1051 overflow: hidden; 1052 padding: 0; 1053 position: 1054 absolute; 1055 width: 1px; 1056 } 1057 1058 // Align an object with absolute positioning 1059 // Used to align the Big Play Button in the corners or center 1060 .absolute-align (@align, @margin, @length) when (@align = top) { 1061 top: @margin; 1062 } 1063 .absolute-align (@align, @margin, @length) when (@align = bottom) { 1064 bottom: @margin; 1065 } 1066 .absolute-align (@align, @margin, @length) when (@align = left) { 1067 left: @margin; 1068 } 1069 .absolute-align (@align, @margin, @length) when (@align = right) { 1070 right: @margin; 1071 } 1072 .absolute-align (@align, @margin, @length) when (@align = center) { 1073 /* Center it horizontally */// 1074 left: 50%; 1075 margin-left: (-(@length/2)); 1076 // margin-left: ((@length*-1)/2); 1077 } 1078 .absolute-align (@align, @margin, @length) when (@align = middle) { 1079 /* Center it vertically */// 1080 top: 50%; 1081 margin-top: (-(@length/2)); 1082 // margin-top: ((@length*-1)/2); 1083 } 1084 1085 // http://stackoverflow.com/questions/637921/opacity-of-background-but-not-the-text 1086 .background-color-with-alpha (@color, @alpha) { 1087 @rgba: rgba(red(@color), green(@color), blue(@color), @alpha); 1088 /* background-color-with-alpha */// 1089 background-color: @color; 1090 background-color: @rgba; 1091 // No longer using MS filters because they break border radius in IE9 1092 // @argb: argb(@rgba); 1093 // filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr=@{argb}, endColorstr=@{argb})"; 1094 // -ms-filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr=@{argb}, endColorstr=@{argb})"; 1095 } 1096 1097 .border-color-with-alpha (@color, @alpha) { 1098 @rgba: rgba(red(@color), green(@color), blue(@color), @alpha); 1099 /* border-color-with-alpha */// 1100 border-color: @color; 1101 border-color: @rgba; 1102 } 1103 1104 // NOTES ON LESS (tracking learnings so we don't forget) 1105 // ============================================================================= 1106 // * We want this file to continue to be accessible by people who don't know 1107 // LESS but know CSS. This means finding the balance between using the most 1108 // valuable LESS features (e.g. variables) and keeping it looking like CSS. 1109 // So it's best to avoid advanced LESS features like conditional statements. 1110 // (we're using one for the big play button position because that's a hot 1111 // topic) 1112 // 1113 // * We care about the readability of the CSS output of LESS, which means we 1114 // have to be careful about what features of LESS we use. (if you're building 1115 // your own skin this may not apply) 1116 // 1. Comments inside of rules (strangely) have an extra line added after 1117 // them in the CSS output. To avoid this we can add a LESS comment after 1118 // the CSS comment. 1119 // /* comment */// 1120 // 1121 // 2. In a rule with nested rules, any comments outside of a rule are moved 1122 // to the top of the parent rule. i.e. it might look like: 1123 // /* title of rule 1 */ 1124 // /* title of rule 2 */ 1125 // .rule1 {} 1126 // .rule2 {} 1127 // This is why we aren't using nested rules inside of the 1128 // vjs-default-skin class. 1129 1130 /* ----------------------------------------------------------------------------- 1131 The original source of this file lives at 1132 https://github.com/videojs/video.js/blob/master/src/css/video-js.less */