• 技术文章 >web前端 >css教程

    实现多背景模拟动态边框

    php中世界最好的语言php中世界最好的语言2018-03-22 15:53:23原创1288
    这次给大家带来实现多背景模拟动态边框,实现多背景模拟动态边框的注意事项有哪些,下面就是实战案例,一起来看一下。

    首先来看看要实现的效果图

    大前端零基础入门到就业:进入学习

    实现方法如下

    我首先想到的是border属性,可是border属性不能设置长度。如果用border实现,需要用其他元素来模拟,比较麻烦。后来突然想起以前在网上看到有人用CSS3的多背景来模拟边框,就试了一下。

    css3 背景

    CSS3对于background做了一些修改,最明显的一个就是采用设置多背景,不但添加了4个新属性,并且还对目前的属性进行了调整增强。

    1、 多个背景图片

    在css3里面,你可以再一个标签元素里应用多个背景图片。代码类似与css2.0版本的写法,但引用图片之间需用“,”逗号隔开。第一个图片是定位在元素最上面的背景,后面的背景图片依次在它下面显示,如下:

    background-image: url(top-image.jpg), url(middle-image.jpg), url(bottom-image.jpg);

    2、新属性:Background Clip

    此讨论让我们回到文章开始提到的关于背景被border边框遮挡的问题。background-clip的添加让我们完全能够控制背景显示的位置。

    属性值如下:

    background-clip: border; 背景在border边框下开始显示

    background-clip: padding; 背景在padding下开始显示,而不是border边框下开始

    background-clip: content; 背景在内容区域下开始显示,而不是border边框下开始或padding下开始。

    background-clip: no-clip; 默认属性值,类似与background-clip: border;

    3、新属性: Background Origin

    此属性需要与background-position配合使用。你可以用background-position计算定位是从border,padding或content boxes内容区域算起。(类似background-clip)

    background-origin:border; 从border边框位置算起

    background-origin:padding; 从padding位置算起

    background-origin:content; 从content-box内容区域位置算起;

    background-clip和background-origin的不同之处www.CSS3.info网站给做了很好的分析讲解。

    4、新属性:Background Size

    Background Size属性用来重设你的背景图片。

    有几个属性值:

    background-size: contain; 缩小背景图片使其适应标签元素(主要是像素方面的比率)

    background-size: cover; 让背景图片放大延伸到整个标签元素大小(主要是像素方面的比率)

    background-size: 100px 100px; 标明背景图片缩放的尺寸大小

    background-size: 50% 100%; 百分比是根据内容标签元素大小,来缩放图片的尺寸大小

    你可以去CSS 3 specifications站点看一下简单的案例说明。

    5、新属性:Background Break

    css3里标签元素能被分在不同区域(如:让内联元素span跨多行),background-break属性能够控制背景在不同区域显示。

    属性值:

    Background-break: continuous; 此属性是默认值,忽视区域之间的间隔空隙(给它们应用图片就好像把它们看成一个区域一样)

    Background-break: bounding-box; 重新考虑区域之间的间隔

    Background-break: each-box; 对每一个独立的标签区域进行背景的重新划分。

    6、背景颜色的调整

    background-color属性在css3版本里面稍微做了增强,除了指定background color背景颜色之外,还可以对不使用的标签元素背景图片进行去色处理。

    background-color: green / blue;此例子里,这背景颜色可能是绿色,然而,如果底部背景图片无效的话,蓝色将代替绿色来显示。如果你没有指定某个颜色的话,它将其视为透明。

    7、背景重复的调整

    css2里当设置背景的时候,它经常被标签元素截取而显示不全,css3介绍了2个新属性来修复此问题。 space:图片以相同的间距平铺且填充整个标签元素 round:图片自动缩放直到适应且填充整个标签元素

    CSS 3 specifications网站对background-repeat: space的使用就是一个现成的例子。

    8、Background Attachment 的调整

    Background Attachment有了一个新属性值:local,当标签元素滚动时它才有效(如设置overflow:scroll;),当background-attachment设置为scroll时,背景图片是不随内容滚条滚动的。现在,有了background-attachment:local,就可以做到让背景随元素内容滚动而滚动了。

    css3 多背景模拟元素边框

    我们这里主要使用了background-img、background-size 和 background-position 三个属性。

    background-image: [background-image], [background-image], [background-image]; 
    background-position: [background-position], [background-position], [background-position]; 
    background-repeat: [background-repeat], [background-repeat], [background-repeat];

    简写形式如下:

    background: [background-image] [background-position] [background-repeat], 
    [background-image] [background-position] [background-repeat], 
    [background-image] [background-position] [background-repeat];

    现在我们用多背景来模拟一个元素的边框

    /*CSS*/
    .exammple {
        background: linear-gradient(0, #108b96 2px, #108b96 2px) no-repeat, 
                    linear-gradient(-90deg, #108b96 2px, #108b96 2px) no-repeat, 
                    linear-gradient(-180deg, #108b96 2px, #108b96 2px) no-repeat, 
                    linear-gradient(-270deg, #108b96 2px, #108b96 2px) no-repeat;
        background-size: 100% 2px, 2px 100%, 100% 2px, 2px 100%;
        background-position: left top, right top, right bottom, left bottom;
    }
    <p class="exammple"></p>

    我们用四个渐变的背景来模拟四个边框(为什么我们要用渐变而不是直接的Color呢?这是由于Css的多背景只能是background-image, background-color不支持多个值,所有即便是纯色的边框,我们也只能使用渐变)。

    接下来我们让边框动起来

    /*CSS*/
    .exammple {
        transition: ease-in .3s;
        background: linear-gradient(0, #108b96 2px, #108b96 2px) no-repeat, 
                    linear-gradient(-90deg, #108b96 2px, #108b96 2px) no-repeat, 
                    linear-gradient(-180deg, #108b96 2px, #108b96 2px) no-repeat, 
                    linear-gradient(-270deg, #108b96 2px, #108b96 2px) no-repeat;
        background-size: 0 2px, 2px 0, 0 2px, 2px 0;
        background-position: left top, right top, right bottom, left bottom;
    }
    .exammple:hover {
        background-size: 100% 2px,  2px 100%, 100% 2px, 2px 100%;
    }

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    设置滚动条样式

    CSS的居中布局总结

    Css3的之形状总结

    三种绝对定位元素的水平垂直居中的办法

    以上就是实现多背景模拟动态边框的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:边框 动态 模拟
    上一篇:IE6下兼容问题的解决方案 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 带你吃透Flex布局的三个属性:flex-grow、flex-shrink、flex-basis• 实例详解CSS渐变锯齿问题如何解决!• 另辟蹊径!看看使用CSS滤镜怎么构建圆角和波浪效果• 聊聊怎么利用 CSS 构建花式透视背景• 详解css中的比较函数(示例介绍)
    1/1

    PHP中文网