zoukankan      html  css  js  c++  java
  • audio标签、HOVER效果、rgba和opacity、隐藏场景

    HTML5的audio定义音频流

    HTML5里引入的新标记 <audio><video> 实现了HTML对视频播放和音频播放的原生支持,有了这种原生的HTML5视频播放器/音频播放器,我们不再需要flash技术,而直接能将视频/音频嵌入到了网页中。

    <audio><video> 两个标记上控制属性的含义:

    • controls : 显示标准的 HTML5 视频/音频播放器控制条、控制按钮。
    • autoplay : 让文件自动播放。
    • loop : 让文件循环播放。

    preload 属性是用来缓存大体积文件的。它有三个可选值:

    • "none" 不缓存
    • "auto" 缓存
    • "metadata" 只缓存文件元信息

    为了能够兼容各种浏览器对不同媒体类型的支持,我们可以用多个 <source> 元素来提供多个不同的媒体类型。

    <video controls>
      <source src="foo.ogg" type="video/ogg">
      <source src="foo.mp4" type="video/mp4">
      Your browser does not support the <code>video</code> element.
    </video>
    

    持Ogg格式视频流的浏览器可以播放 Ogg 文件。如果不支持,可以播放 MPEG-4 文件。

    我们还可以指定播放使用的解码器(codecs); 这样就可以更精确的让浏览器如何播放提供的视频:

    <video controls>
      <source src="foo.ogg" type="video/ogg; codecs=dirac, speex">
      Your browser does not support the <code>video</code> element.
    </video>
    

    上面,我们指定了这个视频需要使用 Dirac 和 Speex 解码器。如果浏览器支持 Ogg 格式,但没有指定的解码器,那么,视频将不会被加载。

    如果没有提供 type 属性,则浏览器会向服务器询问媒体类型,看看是否支持;如果不支持,浏览器将会去检查下一个 source 属性

    用JavaScript控制视频/音频播放

    用JavaScript可控制HTML5视频播放器实现播放、暂停、快进,快退、音量等。
    <audio id="demo" src="audio.mp3"></audio>
    <div>
      <button onclick="document.getElementById('demo').play()">播放</button>
      <button onclick="document.getElementById('demo').pause()">暂停</button>
      <button onclick="document.getElementById('demo').volume+=0.1">降低音量</button>
      <button onclick="document.getElementById('demo').volume-=0.1">提高音量</button>
    </div> 
    
    停止下载视频文件

    虽然我们可以使用pause()方法里让视频文件停止播放,但浏览器并未停止下载媒体文件,除非它达到了一定的缓存量。

    下面是让浏览器如何停止下载视频文件的方法:

    var mediaElement = document.getElementById("myMediaElementID");
    mediaElement.pause();
    mediaElement.src='';
    //或
    mediaElement.removeAttribute("src");
    

    通过删除 src 属性(或者设置为空值),这样就能停止文件的网络下载。

    设定播放的时间点定位

    我们可以指定视频从某时某分某秒开始播放,这是通过设置 currentTime 属性来实现。

    我们可以通过 seekable 属性来获得视频有效的播放时间范围。它会返回一个 TimeRanges 对象,能够告诉你有效的开始时间和结束时间。

    var mediaElement = document.getElementById('mediaElementID');
    mediaElement.seekable.start(0);  // 返回开始时间 (秒)
    mediaElement.seekable.end(0);    // 返回结束时间 (秒)
    mediaElement.currentTime = 122; // 定位到第 122 秒播放
    mediaElement.played.end(0);      // 返回已经播放的时间长度(秒)
    

    :hover

    :hover CSS伪类适用于用户使用指示设备虚指一个元素(没有激活它)的情况。这个样式会被任何与链接相关的伪类重写,像:link, :visited, 和 :active等。为了确保生效,:hover规则需要放在:link和:visited规则之后,但是在:active规则之前

    :hover伪类可以任何伪元素上使用

    但是需要注意: 在触摸屏上 :hover 有问题,基本不可用。不同的浏览器上:hover 伪类表现不同。 可能从不会触发;或者在触摸某元素后触发了一小会儿;或者总是触发即使用户不在触摸了,直到用户触摸别的元素。

    CSS半透明效果的属性和场景

    在CSS中与半透明效果相关的属性有两个:opacity和rgba。

    opacity属性的值规定透明度。从 0.0 (完全透明)到 1.0(完全不透明)。设置opacity元素的所有后代元素会随着一起具有透明性,一般用于调整图片或者模块的整体不透明度。

    rgba用于设置颜色的透明度,参数是rgba(red, green, blue, alpha) alpha的取值从 0(完全透明) 到 1(完全不透明),如rgba(255,255,255,0.8)。

    深度思考

    如果是在手机上查看,没有HOVER效果时应该怎么办?

    手机端没有hover特效,当你点击的时候就直接触发click.

    :hover在Android系统上点击会出现, 但是需要再次点击才会消失;IOS系统上点击无法出现

    手机虽然没有鼠标,但是有触摸事件

    触摸事件(touch)会在用户手指放在屏幕上面的时候、 在屏幕上滑动的时候或者是从屏幕上移开的时候触发。

    1. touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。
    2. touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。
    3. touchend事件:当手指从屏幕上离开的时候触发。
    4. touchcancel事件:touchcancel,是在拖动中断时候触发。

    rgba和opacity的透明效果有什么不同?display和visiblity有什么区别?

    rgba是什么:

    RGB(Red(红色) Green(绿色) Blue(蓝色))的基础上增加了一个通道Alpha。

    Alpha参数为透明值,在0~1之间。RGBa 扩展了 RGB的颜色

    rgba()是css中设置背景颜色中的一个属性。

    Opasity是什么:

    opacity属性设置一个元素的透明度级别。

    opacity是css的一个属性,取值0~1,0为完全透明,1为完全不透明。默认是继承父元素opacity属性,所以子元素会继承父元素的opacity属性值,从而产生相同的效果

    区别是什么:

    rgba( )的作用对象是元素的背景颜色或元素的颜色,其对象的子元素不能够继承它的透明度;

    opacity的作用对象是元素,以及元素的所有内容,并且其子元素能够继承它的透明度

    display和visibility

    display:none与元素的显隐

    当元素设置display:none后,界面上将不会显示该元素,并且该元素不占布局空间(影响布局),但我们仍然可以通过JavaScript操作该元素。

    display如果值为none,则该元素以及所有后代元素都隐藏,反之如果值是非none的情况,则都为显示了

    none做到了无法点击、无法使用屏幕阅读器等辅助设备访问,不占空间

    display: none的元素的background-image图片根据不同浏览器的情况加载情况不一

    • 在Firefox浏览器下,display:none的background-image图片不加载,包括父元素display:none也是如此
    • 在Chrome和Safari浏览器,则根据父元素是否是否为none来影响图片加载情况,父元素带有display:none,图片不加载。父元素不带有display:none,而自身有背景图元素带的话,那也照样加载
    • 在IE浏览器下,无论怎么搞都会请求图片资源
    visibility与元素的显隐
    1. 继承性
    • 父元素设置visibility:hidden,子元素也继承了该属性,也是看不见的
    • 不过本质区别在于,父元素设置了hidden后,子元素设置visible后,子元素是可以被看都的
    • 这点父元素设置了display:none,子元素就永远看不到了
    1. 与css计数器
      visibility:hidden虽然让元素不可见了,但是不影响其计数效果,不会重新计算结果
    2. 与transition
      设置了visibility:hidden的元素,可以很好的展现transition过渡效果
      这是因为transition支持的css属性中有visibility
    3. 与JS
      visibility:hidden除了对transition友好外,对js来说也很友好
      在实际开发中,需要对隐藏元素进行尺寸和位置的获取,来实现布局精确定位的交互
      此时,就建议使用visibility:hidden

    比较好的隐藏场景

    • 不占空间,不渲染 使用script<script type="text/html">
    <script type="text/html">
    <!-- 图片是不会发送请求的 -->
        <img src="1.jpg" />
        <!-- 如果想嵌套需要借助textarea了 -->
        <textarea style="display: none;">
            <img src="2.png" />
        </textarea>
    </script>
    
    • 不占空间,资源可以加载,DOM可访问 使用display:none
    <div id="box">成都</div>
        <script>
            let oBox = document.getElementById('box');
            console.log(oBox);  // <div id="box">成都</div>
        </script>
    
    • 不占空间,隐藏显示时有transition效果
    .hidden {
        position: absolute;
        visibility: hidden;
    }
    
    <div class="div hidden">一杯敬朝阳 一杯敬月光</div>
    
    • 占空间,不能点击 visibility: hidden
    .vh {
        visibility: hidden;
    }
    
    • 不占空间,不能点击,键盘能访问 clip裁切
    .out {
        position: relative;
        left: -999em;
    }
    .clip {
        position: absolute;
        clip: rect(0, 0, 0, 0);
    }
    
    <div class="clip">
        <div class="out">青花瓷</div>
    </div>
    
    • 占空间,不能点击,键盘能访问 relative
    <div style="position: relative;top: -999em;">狮子座</div>
    
    • 占空间,可以点击 opacity
    <div style="opacity: 0; filter: alpha(opacity=0);">透明度</div>
    
    
    • 隐藏文字 使用text-indent
    <p style="text-indent: -999999px;">天下无双</p>
    
  • 相关阅读:
    【jQueryMobile】Helloworld而页面切换
    _00023 Kafka 奇怪的操作_001它们的定义Encoder达到Class数据传输水平和决心
    POJ2553-The Bottom of a Graph
    Delphi 把字符串读到流中的操作。
    性格分析----测试篇
    Delphi7下实现HTTP的Post操作 转
    Delphi流的操作 转
    delphi中通过http控件上载文件的问题(紧急) 整理的CSDN 帖子
    用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
    Delphi动态调用Java的WebService 转
  • 原文地址:https://www.cnblogs.com/housheng/p/12109674.html
Copyright © 2011-2022 走看看