這次帶給大家實作多背景模擬動態邊框,實現多背景模擬動態邊框的注意事項有哪些,下面就是實戰案例,一起來看一下。
首先來看看要實現的效果圖
實作方法如下
我首先想到的是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下開始顯示,而不是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位置上算起##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; 標明背景圖片縮放的尺寸大小 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中文网其它相关文章!
推荐阅读:
以上是實現多背景模擬動態邊框的詳細內容。更多資訊請關注PHP中文網其他相關文章!