CSS3实现多背景模拟动态边框的效果


Posted in HTML / CSS onNovember 08, 2016

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

CSS3实现多背景模拟动态边框的效果

实现方法如下

我首先想到的是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;
}
<div class="exammple"></div>

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

CSS3实现多背景模拟动态边框的效果

接下来我们让边框动起来

/*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%;
}

相比border属性,用background的模拟边框的优势在于可以控制边框的宽高,运动方向等,实现很多border不能实现的效果,劣势在于不能实现border的圆角。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用Css3能有所帮助,如果有疑问大家可以留言交流。

HTML / CSS 相关文章推荐
CSS3教程(4):网页边框和网页文字阴影
Apr 02 HTML / CSS
纯css3无js实现的Android Logo(有简单动画)
Jan 21 HTML / CSS
实现CSS3中的border-radius(边框圆角)示例代码
Jul 19 HTML / CSS
详解CSS中iconfont的使用
Aug 04 HTML / CSS
html5触摸事件判断滑动方向的实现
Jun 05 HTML / CSS
利用纯html5绘制出来的一款非常漂亮的时钟
Jan 04 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
Aug 28 HTML / CSS
html5 canvas实现给图片添加平铺水印
Aug 20 HTML / CSS
html5响应式开发自动计算fontSize的方法
Jan 13 HTML / CSS
总结html5自定义属性有哪些
Apr 01 HTML / CSS
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
Oct 16 HTML / CSS
CSS 左边固定宽右边自适应的6种方法
May 15 HTML / CSS
CSS3实现同时执行倾斜和旋转的动画效果
Oct 27 #HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
Oct 19 #HTML / CSS
CSS3点击按钮实现背景渐变动画效果
Oct 19 #HTML / CSS
CSS3实现各种图形的示例代码
Oct 19 #HTML / CSS
利用CSS3实现平移动画效果示例代码
Oct 12 #HTML / CSS
CSS3模拟IOS滑动开关效果
Sep 28 #HTML / CSS
CSS3打造磨砂玻璃背景效果
Sep 28 #HTML / CSS
You might like
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript hashtable实现代码
2009/10/13 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Python的词法分析与语法分析
2013/05/18 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
小学教师自我鉴定范文
2014/03/20 职场文书
最美护士演讲稿
2014/08/27 职场文书
小学体育教学随笔
2015/08/14 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python