当前位置:首页 > 建站教程 > 如何使用 CSS3 盒子阴影复制元素?

如何使用 CSS3 盒子阴影复制元素?

2年前 (2024-01-16)建站教程760
今天我们分享内容:如何使用 CSS3 盒子阴影复制元素?其实这个问题不难,只要你掌握了CSS3的阴影功能,还是比较得心应手的,我们一起先看个DEMO。
Markup
<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8" />    
<title>CSS3 Box-Shadow Elements</title>    
<style>    
*    
{    
 padding: 0;    
 margin: 0;    
}    
body    
{    
 font-family: sans-serif;    
 color: #222;    
 background-color: #ddd;    
 margin: 10px;    
}    
#element    
{    
 width: 100px;    
 height: 100px;    
 padding: 0;    
 margin: 100px auto;    
 background-color: #ddd;    
 border-radius: 50px;    
 -webkit-animation: rotate 3s linear infinite;    
 -moz-animation: rotate 3s linear infinite;    
 -ms-animation: rotate 3s linear infinite;    
 -o-animation: rotate 3s linear infinite;    
 animation: rotate 3s linear infinite;    
}    
/* animation */    
@-webkit-keyframes rotate {    
 100% { -webkit-transform: rotate(360deg); }    
}    
@-moz-keyframes rotate {    
 100% { -moz-transform: rotate(360deg); }    
}    
@-ms-keyframes rotate {    
 100% { -ms-transform: rotate(360deg); }    
}    
@-o-keyframes rotate {    
 100% { -o-transform: rotate(360deg); }    
}    
@keyframes rotate {    
 100% { transform: rotate(360deg); }    
}    
p    
{    
 margin: 1em 0;    
}    
pre    
{    
 padding: 3px 5px;    
 color: #fff;    
 background-color: #333;    
 border: 2px inset #999;    
}    
</style>    
</head>    
<body>    
 <h1>CSS3 Box-Shadow Elements</h1>    
 <div id="element"></div>     
<script>    
var e = document.getElementById("element"), r = -6, bs = "";    
for (var p = Math.PI; p > 0; p = p - 0.2) {    
 bs += "," + px(Math.cos(p)*100) + px(Math.sin(p)*100) + px(0) + px(r) + "rgba("+(255+r*5)+",0,0,"+(p/Math.PI)+")";    
 bs += "," + px(Math.cos(Math.PI+p)*100) + px(Math.sin(Math.PI+p)*100) + px(0) + px(r--) + "rgba(0,0,"+(255+r*5)+","+(p/Math.PI)+")";    
 r = r - 2;    
}    
e.style.boxShadow = bs.substr(1);    
function px(num) {    
 return Math.round(num)+"px ";    
}    
</script>    
</body>    
</html>
本段代码来自 https://www.jiangweishan.com/article/css3shadow20221028.html
圆圈是使用 DOM 元素而不是画布、SVG、Flash 或其他替代方法创建的。 问题:不看源码,需要多少个DOM元素? 如果您阅读本文的标题,答案应该很明显。只使用一个元素;在这种情况下,它是一个DIVID 为“元素”的单个。它实际上是一个看不见的圆圈,因为它的颜色与背景相匹配。 其他圆圈是在 CSS 中使用该属性的一个鲜为人知的特性定义的box-shadow。它允许您在任何位置、任何大小、任何颜色中多次复制任何元素的形状。该属性有六个参数:
  1. inset:(可选)如果定义,阴影将出现在元素内部
  2. 水平:与元素的 x 距离
  3. 垂直:与元素的 y 距离
  4. blur:(可选)模糊半径,即 0 表示不模糊
  5. spread:(可选)阴影传播的距离,即 1px 向所有方向扩展阴影 1 个像素,因此它比父元素宽和高 2px
  6. color : 阴影颜色
我们可以使用水平和垂直距离进行相对定位。散布可以是正数或负数,以使阴影大于或小于父元素。由于可以定义多个阴影,我们可以多次复制原始形状,例如:
#element
{
	width: 100px;
	height: 100px;
	background-color: #ccc;
	border-radius: 50px;
	box-shadow: 120px    0px 0  15px #f00,
				-60px  104px 0   0px #0f0,
				-60px -104px 0 -15px #00f;
}
效果: image.png 请记住,您的形状也可以有 :before 和 :after 伪元素,它们有自己的盒子阴影。 下一个问题:这有用吗? 这更难回答,但在开发具有重复形状的页面时,这是一个需要考虑的选项。它当然可以帮助减少页面重量。 显然,可以将该技术发挥到极致,并使用箱形阴影创建整个可缩放图形,举两个例子。 DEMO1:像素忍者。
Markup
<!DOCTYPE html>
<html>
<head>
<title>阴影演示</title>
<meta charset="utf-8">
<script src="https://cdn.staticfile.org/angular.js/1.6.3/angular.min.js"></script>
<style>
  @import url(https://fonts.googleapis.com/css?family=Sarina);
/* Choose your size */
/* SASS function - centering */
html {
  height: 100%;
}

body {
  background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjAiIHI9IjEwMCUiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM5OTk5OTkiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') no-repeat;
  background: -moz-radial-gradient(center 0, circle cover, #ffffff, #999999) no-repeat;
  background: -webkit-radial-gradient(center 0, circle cover, #ffffff, #999999) no-repeat;
  background: radial-gradient(circle cover at center 0, #ffffff, #999999) no-repeat;
  background-color: #ddd;
  height: 100%;
}

.ninja {
  width: 153px;
  height: 207px;
  margin: 20px auto;
  position: relative;
  font-size: 9px;
}

.ninja:after {
  content: "Code Ninjas";
  color: black;
  font-family: 'Sarina', cursive;
  text-align: center;
  position: absolute;
  font-size: 7em;
  left: 50%;
  bottom: -1.5em;
  width: 8em;
  margin-left: -4em;
}

.ninja:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 1em;
  height: 1em;
  box-shadow: 2em 0, 1em 1em, 2em 1em, 1em 2em, 2em 2em, 1em 3em, 2em 3em, 6em 3em, 7em 3em, 8em 3em, 9em 3em, 10em 3em, 11em 3em, 12em 3em, 1em 4em, 2em 4em, 5em 4em, 6em 4em #555, 7em 4em #555, 8em 4em #555, 9em 4em #555, 10em 4em #555, 11em 4em #555, 12em 4em #555, 13em 4em, 15em 4em, 16em 4em, 1em 5em, 2em 5em, 5em 5em, 6em 5em #555, 7em 5em, 8em 5em, 9em 5em, 10em 5em, 11em 5em, 12em 5em, 13em 5em, 14em 5em, 1em 6em, 2em 6em, 5em 6em, 6em 6em #555, 7em 6em #e9c190, 8em 6em, 9em 6em #e9c190, 10em 6em, 11em 6em #e9c190, 12em 6em, 13em 6em, 14em 6em, 15em 6em, 16em 6em, 1em 7em, 2em 7em, 5em 7em, 6em 7em #555, 7em 7em #e9c190, 8em 7em #ffe3bd, 9em 7em #e9c190, 10em 7em #ffe3bd, 11em 7em #ffe3bd, 12em 7em, 13em 7em, 1em 8em, 2em 8em, 5em 8em, 6em 8em #555, 7em 8em, 8em 8em, 9em 8em, 10em 8em, 11em 8em, 12em 8em, 13em 8em, 15em 8em, 1em 9em, 2em 9em, 6em 9em, 7em 9em #555, 8em 9em #555, 9em 9em #555, 10em 9em, 11em 9em, 12em 9em, 14em 9em, 15em 9em #555, 16em 9em, 0 10em, 1em 10em, 2em 10em, 3em 10em, 4em 10em, 5em 10em, 6em 10em #555, 7em 10em #555, 8em 10em #555, 9em 10em, 10em 10em, 11em 10em, 12em 10em, 13em 10em, 14em 10em #555, 15em 10em #555, 16em 10em, 0 11em, 1em 11em #555, 2em 11em, 3em 11em #555, 4em 11em #555, 5em 11em #555, 6em 11em #555, 7em 11em, 8em 11em, 9em 11em, 10em 11em, 11em 11em, 12em 11em #555, 13em 11em #555, 14em 11em, 15em 11em, 16em 11em, 0 12em, 1em 12em #555, 2em 12em, 3em 12em, 4em 12em, 5em 12em, 6em 12em, 7em 12em, 8em 12em, 9em 12em, 10em 12em, 11em 12em, 12em 12em, 13em 12em, 14em 12em, 15em 12em, 16em 12em, 1em 13em, 2em 13em, 3em 13em, 4em 13em, 5em 13em, 6em 13em, 7em 13em, 8em 13em, 9em 13em, 10em 13em, 11em 13em, 12em 13em, 13em 13em, 14em 13em, 15em 13em, 6em 14em #555, 7em 14em #555, 8em 14em, 9em 14em, 10em 14em, 11em 14em, 12em 14em, 6em 15em #fa0117, 7em 15em #a80002, 8em 15em #a80002, 9em 15em #a80002, 10em 15em, 11em 15em #fa0117, 12em 15em, 4em 16em, 5em 16em, 6em 16em #555, 7em 16em, 8em 16em, 9em 16em, 10em 16em, 11em 16em, 12em 16em #a80002, 13em 16em, 3em 17em, 4em 17em #555, 5em 17em, 6em 17em, 7em 17em, 8em 17em, 9em 17em, 10em 17em, 11em 17em, 12em 17em, 13em 17em #a80002, 14em 17em, 3em 18em, 4em 18em #555, 5em 18em, 6em 18em, 7em 18em, 8em 18em, 9em 18em, 10em 18em, 11em 18em, 12em 18em, 13em 18em, 2em 19em, 3em 19em #555, 4em 19em #555, 5em 19em, 10em 19em, 11em 19em, 12em 19em, 1em 20em, 2em 20em, 3em 20em, 4em 20em #555, 5em 20em, 10em 20em, 11em 20em #555, 12em 20em #555, 13em 20em, 1em 21em, 2em 21em, 3em 21em, 4em 21em, 5em 21em, 10em 21em, 11em 21em #555, 12em 21em, 13em 21em, 14em 21em, 10em 22em, 11em 22em, 12em 22em, 13em 22em, 14em 22em;
}

</style>
</head>
<body>
  <div class="ninja"></div>

</body>
</html>
本段代码来自 https://www.jiangweishan.com/article/css3shadow20221028.html
DEMO2:蒙娜丽莎。 可以点击链接去预览:DEMO预览 但是,鉴于 PNG 或 SVG 可能更高效且更易于创建,因此这是毫无意义的。但是,如果您将重复框阴影技术用于任何有趣的事情,请告诉我……

扫描二维码推送至手机访问。

欢迎转载或分享本篇文章。

本文链接:https://www.jcba123.com/article/744

标签: css
分享给朋友:

“如何使用 CSS3 盒子阴影复制元素?” 的相关文章

网页设计!教你如何设计网页

网页设计!教你如何设计网页

首先,大家要先知道,什么是网页设计,很多人会说,网页设计不就是文字和图片的组合吗?没错,网页中包括文字、图片、视频等元素,但是仅仅把这些元素排在一起就是网页了嘛,显然不是。 网页设计其实是一个感性思考与理性分析相结合的过程,对设计师自身的美感以及对版面的把握都有较高的要求。经过这几年网页设计的...

如何搭建一个个人网站?

如何搭建一个个人网站?

现在越来越多的人开始关注个人网站的建设。个人网站不仅可以展示自己的个人信息和作品,还可以帮助自己建立个人品牌,提高自己在互联网上的曝光度。那么,如何自己搭建一个个人网站呢?有两种方式: 自己学习技术搭建网站 选用在线建站或外包建站公司 两种方式都遵从基本的网站搭建步骤:...

使用 WP Downgrade 在线降级 WordPress 到旧版本!

我们都知道,每当WordPress有新本的时候,我们都可以在后台一键更新。但是有些时候,我们的主题或插件可能不兼容新版本的WP,这时候我们如果要降级为之前的旧版本,该怎么操作呢?下面一起来看看。 重要提示:不管是升级还是降级,操作前,请务必备份你的网站数据,尤其是网站的数据库,以防万一!...

WordPress 如何批量修改文章信息?

你是否遇到过如下几种状况: 博客更换域名,博客文章的内容也要跟着换 使用的图片地址更换了 写了很多文章,回过头来想切换作者 想删除某个可恶留言者的所有留言 想更改某个留言者所有留言的网站URL 想要禁用所有文章的pingback 想要禁用所有文章的评...

介绍使用WordPress时10个常用的MySQL查询

多数使用 WordPress 搭建的网站,其后台都是 MySQL 数据库,经常我们需要定制 WordPress 的功能,这里我们列表 10 个最有用的 WordPress 的数据库查询,你需要一个数据库的管理工具,例如 phpMyAdmin 或者 Navicat 等来执行这些 SQL 语句。...

8个好用的WordPress RSS Feed插件

8个好用的WordPress RSS Feed插件

什么是RSS Feed? RSS代表“Really Simple Syndication”,但它也可能意味着“丰富站点摘要”或“实时简单联合组织”。这是一种基于XML的内容格式,可向用户更新所有他们喜欢的网站上的最新新闻,文章,标题和内容。 由于已经存在了很长一段时间,因此许多人都认为RSS...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。