【CSS进阶】巧用伪元素before和after制作绚丽效果(上):https://developer.aliyun.com/article/1483392
6 绚丽流动边框
<div class="box-line1"></div>
.box-line2, .box-line2::before, .box-line2::after { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .box-line2 { width: 200px; height: 200px; margin: auto; color: #69ca62; box-shadow: inset 0 0 0 1px rgba(105, 202, 98, 0.5); } .box-line2::before, .box-line2::after { content: ""; z-index: 99; margin: -5%; box-shadow: inset 0 0 0 2px; animation: clipMe 8s linear infinite; } .box-line2::before { animation-delay: -4s; } .box-line2:hover::after, .box-line2:hover::before { background-color: rgba(255, 0, 0, 0.3); } @keyframes clipMe { 0%, 100% { clip: rect(0px, 220px, 2px, 0px); } 25% { clip: rect(0px, 2px, 220px, 0px); } 50% { clip: rect(218px, 220px, 220px, 0px); } 75% { clip: rect(0px, 220px, 220px, 218px); } } @keyframes surround { 0%, 100% { clip: rect(0px, 220px, 2px, 0px); } 25% { clip: rect(0px, 2px, 220px, 0px); } 50% { clip: rect(218px, 220px, 220px, 0px); } 75% { clip: rect(0px, 220px, 220px, 218px); } } .box-line1:before, .box-line1:after { position: absolute; top: 0; left: 0; bottom: 0; right: 0; content: ""; z-index: 99; margin: -5%; animation: surround linear infinite 8s; box-shadow: inset 0 0 0 2px #69ca62; } .box-line1:before { animation-delay: -4s; } .box-line1 { border: 1px solid #69ca62; position: absolute; left: 500px; top: 200px; margin: auto; width: 200px; height: 200px; margin: auto; }
7.Tooltip提示
<div class="tip" data-tip="CSS伪类">CSS伪类</div>
.tip::after { content: attr(data-tip); display: none; position: absolute; padding: 5px 10px; left: 15%; bottom: 100%; width: 150px; margin-bottom: 12px; transform: translateX(-50%); font-size: 12px; background: #000; color: #fff; cursor: default; border-radius: 4px; } .tip::before { content: " "; position: absolute; display: none; left: 15%; bottom: 100%; transform: translateX(-50%); margin-bottom: 3px; width: 0; height: 0; border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 9px solid #000; } .tip:hover::after, .tip:hover::before { display: block; }
8.CSS 伪类盒子阴影
使用伪元素:before and :after制作出了完美惊艳的相片阴影效果。其中的技巧是使用绝对定位固定伪元素,然后给它们的z-index一个负值,以背景出现。
<div class="box effect2"> <h3>CSS 伪类盒子阴影</h3> </div>
.effect2 { position: relative; } .effect2::before, .effect2::after { z-index: -1; position: absolute; content: ""; bottom: 15px; left: 10px; width: 50%; top: 80%; max-width: 300px; background: #777; -webkit-box-shadow: 0 15px 10px #777; -moz-box-shadow: 0 15px 10px #777; box-shadow: 0 15px 10px #777; -webkit-transform: rotate(-3deg); -moz-transform: rotate(-3deg); -o-transform: rotate(-3deg); -ms-transform: rotate(-3deg); transform: rotate(-3deg); } .effect2::after { -webkit-transform: rotate(3deg); -moz-transform: rotate(3deg); -o-transform: rotate(3deg); -ms-transform: rotate(3deg); transform: rotate(3deg); right: 10px; left: auto; }
9.Tabs当前激活状态
<div class="sm-box flex"> <div class="menu-tabs active">首页</div> <div class="menu-tabs">新闻</div> <div class="menu-tabs">视频</div> <div class="menu-tabs">图片</div> </div>
.menu-tabs { display: block; padding: 0.25rem 1.5rem; clear: both; font-weight: 400; color: #212529; text-align: inherit; white-space: nowrap; background-color: transparent; width: 50px; border: 0; height: 35px; justify-content: center; display: flex; cursor: pointer; } .menu-tabs:hover { color: #20a884; position: relative; } .menu-tabs:hover:after { position: absolute; content: ""; border: 1px solid #20a884; width: 3rem; left: 0; bottom: 0; margin-left: 50%; transform: translateX(-50%); } .active { position: relative; color: #20a884; } .flex { display: flex; } .active::after { position: absolute; content: ""; border: 1px solid #20a884; width: 3rem; left: 0; bottom: 0; margin-left: 50%; transform: translateX(-50%); }
10.伪元素模糊背景
<div class="container"> <div class="overlay"> <h1>A blurred overlay</h1> <p>... mask or whatever <br>that is responsive and could be cross-browser compatible back to IE9</p> </div> </div>
.container { width: 100%; height: 100%; margin: 0; } .container, .overlay:before { background: url(https://wow.techbrood.com/assets/landing.jpg) no-repeat fixed 0 0 / cover; } .container { -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } .overlay { max-height: 200px; margin: 0 auto; max-width: 768px; padding: 50px; position: relative; color: white; font-family: "Lato"; position: relative; text-align: center; z-index: 0; } .overlay:before { content: ""; -webkit-filter: blur(100px); filter: blur(100px); height: 100%; left: 0; position: absolute; top: 0; width: 100%; z-index: -1; }
11.蓝湖文字
<span class="lanhu_text"> 本站由叫我詹躲躲提供技术支持 </span>
.lanhu_text { position: relative; color: #2878ff; } .lanhu_text::before { content: ""; width: 80px; height: 20px; position: absolute; left: -86px; top: 0; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAABCAYAAABJwyn/AAAAjElEQVQoU22NSw7CQAxDX8ahICF2HIDTcf9d1c8kaDpthQSL6CmxHRuk8cZfMxqf6DGh+Y5uCxquaB7xdUCXilZHWvBorEiOaqAKrkRRUEmUOw283TKRRb9b4GnIEpWmGYrA237kDh1w6J5N7zzzZv13gtuvT7t++jefUTYmwvpk7v3fPaCzn//9LfsBvRpHnliu+xMAAAAASUVORK5CYII=) 0 no-repeat; } .lanhu_text::after { content: ""; width: 80px; height: 20px; position: absolute; right: -86px; top: 0; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAABCAYAAABJwyn/AAAAhElEQVQoU22OSw7CQAxDXzJDWbHiEFyRJQflFggJSjyDph9oC6snx45lO52rrKJqzIyNlkFUPv6vnv+3uW9vrPpBq77/uWFPAXnrnfYVQ16JiWq0stjvxKB9vDc/MeaXWo5cqDEFUkKpEuEoB3ollHvUZ9QV4rFD3R3d9ujwJK5HxAW9AStemAIOwCNlAAAAAElFTkSuQmCC) 100% no-repeat; }
【CSS进阶】巧用伪元素before和after制作绚丽效果(下):https://developer.aliyun.com/article/1483395