半透明边框与background-clip
在开始本章之前,我们要先简单介绍CSS中的半透明颜色。自2009年后,网页工作者们开始使用半透明颜色,如rgba()、hsla()。前者相信大家都很熟悉,不难理解其中将有四个参数,第四个参数则为透明度。而后者hsla()则是工业界的颜色标准,它包括了H:Hue(色调—— 用0或360表示红色,120表示绿色,240表示蓝色,也可取其他数值来确定其它颜色,一般取值范围为0~360);S:Saturation(饱和度——取值为:0% - 100%);L:Lightness(亮度——取值为:0% - 100%);Alpha(透明度——取值0~1之间,如“.5”)。从中我们可以明白,要实现颜色的透明化,需要通过修改rgba()/hsla()的第四个参数来达到目的。
自从半透明面世以来其广受欢迎,但实际上大多数半透明颜色都运用在背景上;此外,由于考虑到浏览器我们需要在使用半透明颜色时需要做好回退方案。
到此,你也许已经初步了解了半透明颜色,那么接下来,我将进入本文正题(学习此章需要学习者掌握盒模型知识)。
试想,如果当我们想要让边框实现半透明颜色同时透出背景色我们该如何做呢?
首先,让我们试着为一个<div>元素设置半透明边框,如下:
<body>
<!--为<div>元素设置半透明边框-->
<div style="border:10px dashed rgba(225,225,100,.5);width:600px">
<p>学而时习之</p>
</div>
</body>
其效果如下(图一):

如上图,我们已经设置了透明边框,按理说,当边框有一定的透明度,其背景色也将会透过边框呈现出来,那么我们可以试着给这个<div>元素设置其背景颜色,如下:
<body>
<!--为<div>元素设置半透明边框-->
<div style="border:10px dashed rgba(225,225,100,.5);
width:600px; background-color:red;">
<p>学而时习之</p>
</div> </body>
试着运行这段代码,你是否也得到了如下结果(图二)?

嗯,边框已经透出了背景色,由于我们在设置半透明边框时也为其自身设置了颜色,参照图一,这时边框就像一个自带颜色的透明玻璃框,它盖在了“背景幕布”上面,最后透出了与“幕布”融合的颜色(有种调色的感觉呢)。但是,如果“背景幕布”下还有一层更大的“幕布”,这块带有颜色的透明玻璃框又会怎么做呢?
<body style="background-color:pink">
<!--为<div>元素设置半透明边框-->
<div style="border:10px dashed rgba(225,225,100,.5);
width:600px; background-color:red;">
<p>学而时习之</p>
</div>
</body>
当然你也可以试着用<body>标签的背景图片来进行试验,上述代码我们则得到了以下效果(图三): 
嗯,看来我们可以得出我们的第一个结论了:<div>元素的透明边框透出的是该<div>自身的背景色,也就是说,当我们设置border为透明后,它将会透出其所属元素的背景色。
让我们回顾图二及其代码(如下),会发现我们将border线型设为了dashed,但此时<div>的背景色延伸到了哪里呢?
图二及其代码:
<body>
<!--为<div>元素设置半透明边框-->
<div style="border:10px dashed rgba(225,225,100,.5);
width:600px; background-color:red;">
<p>学而时习之</p>
</div> </body>

没有错,你会发现,<div>的背景色延伸到了border处。但是,这是为什么呢?
如果你已经学习过盒模型了,那么我想你肯定会有所思绪的。上述问题,说白了就是希望背景色“乖乖待在”padding以内的区域的问题。那么要如何实现呢?看看我们这章的标题——半透明边框与background-clip,对的,就是利用background-clip属性。在我们的试验过程中,我们没有说明background-clip属性的属性值,但此时默认地,背景色延伸到了border处;但是如果我们设置一下它的属性值,又会怎样呢?
<body style="background-color:pink;">
<!--为<div>元素设置半透明边框-->
<div style="border:10px dashed rgba(225,225,100,.5);
width:600px;background-color:red;background-clip:padding-box;">
<p>学而时习之</p>
</div>
</body>

we did it !!!!!是的,当我们将background-clip属性的值设为padding-box后,我们解决了“如何让背景色乖乖待在padding以内的区域”的问题。结合前文,我们知道在默认情况(不设置background-clip属性)下,背景延伸会延伸到border处,这就说明实际上此时background-clip属性有一个默认的值,没错,就是“border-box”。由此,我们可以得出我们的第二个结论:background-clip属性说明背景延伸至何处,如果不设置这一属性那么默认情况下其属性值为“border-box”,此时背景色将延伸至border边缘;但是当其属性值为“padding-box”时,背景色将延伸至padding区边缘。
通过设置background-clip为padding-box,我们可以令元素自身的背景色只延伸至padding区边缘,从而令透明的border透出更底下的颜色或者图片,这就是我们想要使用半透明边框的真正目的,也就是这样的效果:

上图效果的代码如下:
<body style="background-image:url('mm93.png');">
<!--为<div>元素设置半透明边框-->
<div style="border:40px solid rgba(225,225,100,.5);
width:200px;height:200px;margin:60px;background-color:red;background-clip:padding-box;">
<p>学而时习之</p>
</div>
</body>
以下就是我们今天解决的三大问题:

半透明边框与background-clip的更多相关文章
- css rgba/hsla知识点讲解及半透明边框
一.RGBA(R,G,B,A) 参数: R:红色值.正整数 | |百分数 G:绿色值.正整数 | |百分数 B:蓝色值.正整数 | |百分数 A:Alpha透明度.取值0~1之间. 说明:此色彩模式与 ...
- CSS揭秘-半透明边框与多重边框
场景一: 实现半透明边框: 由于CSS样式的默认行为,背景色的渲染范围是 content+padding+border. 半透明边框被主调色影响, 实现的效果为 解决方案: 使用backgroun ...
- [css 揭秘]:CSS揭秘 技巧(一):半透明边框
我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在上面哦 喜欢的给我一个星吧 半透明边框 css 中的半透明颜色,比如用 rgba() 和 h ...
- Android Activity 悬浮 半透明边框
1.首先来创建一个Activity,在Activity的OnCreate函数里面我们设置它为全屏,然后设置Activity的宽高为全屏*0.9,然后设置背景图片为半透明的 .9 图片 .这样就已经是非 ...
- css半透明边框
html <div class="parent"> <div class="translucent">I am Bob</div& ...
- css3-background clip 和background origin
1.background-origin background-origin 里面有3个参数 : border-box | padding-box | content-box; border-box,p ...
- css使用rgba()或hsla()设置半透明或完全透明边框border
在css中我们想实现透明颜色,首先就会想到rgba()和hsla()这2个属性.这篇文章就简单介绍下使用这2种方式来实现半透明边框. 1.使用rgba方式: border: 10px solid rg ...
- Css3新特性总结之边框与背景(一)
本系列主要总结Css3一些新特性的认识,来源于<css揭秘>书. 一.半透明边框 css3最好用hsla,而不是rgba,hsla是:h:颜色值(0~360):s:饱合度(0%~100%) ...
- CSS3详解:background
CSS3对于background做了一些修改,最明显的一个就是采用设置多背景,不但添加了4个新属性,并且还对目前的属性进行了调整增强. 1.多个背景图片 在css3里面,你可以再一个标签元素里应用多个 ...
随机推荐
- S2 深入.NET和C#编程 一: 深入C#.NET框架
深入C#.NET框架 1..NET框架 之一 推荐一个代码管理平台,博客发布平台 git 之前的复习: 学习的网站: git github.com 2.类和对象的关系 Dept de ...
- C#保留2位小数的做法
第一 算法实现 保留两位的话,就用一个浮点型先乘以100,然后取整,取整完了之后,再乘以1.0,然后再除以100. 上面这种做法是保留n位,不会四舍五入的.因为这 ...
- 吓尿了,mac下bash出了问题
由于个人的脑残行为,使用homebrew安装bash后,使用chsh命令将其改成brew安装的特定版本的bash,结果上次brew更新bash之后,就彻底用不了shell了... 无奈只能添加新的管理 ...
- JSP的三种注释方式
HTML注释(输出注释):指在客户端查看源代码时能看见注释.例如, <!-- this is an html comment.it will show up int the response. ...
- Scrapy1.4爬取笑话网站数据,Python3.5+Django2.0构建笑话应用
Part1:需求简要描述 1.抓取http://www.jokeji.cn网站的笑话 2.以瀑布流方式显示 Part2:安装爬虫框架Scrapy1.4 1. 安装Scrapy1.4 E:\django ...
- GO开发[二]:golang语言基础
[TOC] 一.变量 1.声明变量 变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间. Go语言引入了关键字var,而类型 ...
- centos7.4 搭建zabbix-server 3.4.5
监控对服务器的重要性来说已经不需要我来一一赘述了,在众多的监控工具之中选择使用zabbix的原因是觉得它功能强大,可以引用的模板有很多,而且图形化做的草鸡棒. 废话就不多了,直接吃鸡. 本次搭建全部采 ...
- linux下centos6.8相关配置,以及音频相关配置
一:安装上传下载命令 1:cd /tmp 2:wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz 3:tar zxvf lrzsz-0. ...
- Python线程:线程的调度-守护线程
Python线程:线程的调度-守护线程 守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程.在python中建议使用的是thread. ...
- 如何删除chrome地址栏里面曾经输错的地址
在chrome浏览器的地址栏输入你想删除的网址的部分字幕,比如,在地址栏输入form,然后用键盘上的方向键定位到你想删除的那个错误的地址,如下图所示 然后在键盘上按 shift+del 组合键将其 ...