Css3 功能查询 @support详解

作者: 魔力老钱 | 来源:发表于2016-09-05 15:28 被阅读345次

    前段时间看到一篇关于css3功能查询的文章,感觉蛮实用的,特别是针对设备之间的兼容性问题,可以很好的解决这方面的问题。


    在考虑到浏览器的兼容性问题时候,我们会在渐进增强或在优雅降级上面犹豫,做出一定的选择,现在有了@support,我们不用担心浏览器不支持css3的一些新属性了,可以放心大胆的使用了。

    1.什么是渐进增强,优雅降级呢?


    1.1渐进增强 progressive enhancement:
    针对低版本浏览器进行构建页面,保证最基本的功能,
    然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
    

    1.2优雅降级 graceful degradation:
    一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
    

    区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。


    2.优雅降级的观点

    优雅降级观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。

    在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。

    3.渐进增强的观点

    渐进增强观点则认为应关注于内容本身。

    内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。


    总结:关于优雅降级和渐进增强没有对错,看自己网站针对的客户群体,选择适合自己的。由于@support涉及到这2个的观点,所以花了点时间给大家介绍了下。


    那么开始进入正文了....

    4.什么是功能查询呢?

    @support 允许我们可以根据浏览器对 CSS 特性的支持情况来定义不同的样式
    下面请看这段案例,判断浏览器是否支持box布局,也就是弹性盒子模型,如果不支持则引用float布局方式

        .con{
                display: box;
                display: -webkit-box;
                display: -moz-box;
                display: -o-box;
                display: -ms-box;
            }   
            .con-left{
                width: 100px;
                height: 50px;
                background-color: blue;
            }
            .con-right{
                width: 100px;
                height: 50px;
                background-color: green;
            }
            /**浏览器不支持弹性盒子模型布局 not 表示不支持 or表示或者条件
             * 不支持弹性盒子模型,则用float布局
             * [display description]
             * @type {[type]}
             */
            @supports not (display: box) or (display: -webkit-box)
             or (display: -moz-box) or (display: -o-box) or (display: -ms-box){
                /**清除浮动*/
                .con:after{
                    content: '';
                    display: block;
                    visibility: hidden;
                    height: 0;
                    clear: both;
                }
                /**加上浮动布局*/
                .con-left,.con-right{
                    float: left;
                }
            }
    

    (注:)这段代码优先使用弹性盒子模型布局,在不支持的情况下使用float布局

    <div class="con">
        <div class="con-left"></div>
        <div class="con-right"></div>
    </div>
    

    浏览器展示效果:

    大家可以清晰的看到con:after清除浮动的代码并没有加入里面,不满足条件的情况下,代码是不会运行的


    5.@support简单的逻辑操作符

    @support支持“not”,“and”、“or”等

    你可以根据需要的清空选择not,and,or3个条件判断

    我在之前的项目中曾经遇到过一个这样的问题,需要做一个模糊头像的效果,这时候我就想到了用css filter 模糊效果,当时用了这个效果之后,一些低版本的Android就不支持这个属性,这个情况怎么办呢?
    总不能因为低版本的Android不支持这个属性,就放弃这个特效吧,这时候@support就起了很大的作用。
    展示代码如下:

        /**
         * 模糊效果
         */
        .blur {
            filter: url(blur.svg#blur);
            /* FireFox, Chrome, Opera */
            -webkit-filter: blur(10px);
            /* Chrome, Opera */
            -moz-filter: blur(10px);
            -ms-filter: blur(10px);
            filter: blur(10px);
            filter: progid: DXImageTransform.Microsoft.Blur(PixelRadius=10, MakeShadow=false);
            /* IE6~IE9 */
        }
        @support not (filter: blur(10px)) or (-webkit-filter: blur(10px)) or
        (-moz-filter: blur(10px)) or (-ms-filter: blur(10px)) or 
        (-o-filter: blur(10px))  {
            /** 使用模糊图片覆盖在背景上,效果比滤镜模糊差了点 */
        }
    

    总结:css3的功能查询真的蛮好用的,所以我写了这篇文章,希望大家都能知道有这个东西,然后可以在项目中去用到它

    相关文章

      网友评论

      本文标题:Css3 功能查询 @support详解

      本文链接:https://www.haomeiwen.com/subject/idurettx.html