首页 > 其他分享 >只用一个 HTML 元素可以写出多少形状?——多边形篇

只用一个 HTML 元素可以写出多少形状?——多边形篇

时间:2024-08-13 09:23:57浏览次数:7  
标签:box 多边形 50px 阴影 HTML 只用 25px shadow red

上一篇章的末尾,我们只用一个 div 元素写了一个鸡蛋,在欧几里得平面几何中,鸡蛋的形状已经不能算是标准形状了。对于非标准的形状,没有比较直观的几何规律,命名方面也更加困难,俗称不规则图形,在欧几里得平面几何中,将其统称为多边形。

在平行四边形篇中,我们首先使用常规的盒模型写出了矩形与正方形。然后使用 transform 属性中的 skew 方法做斜切,写出了传统平行四边形和菱形。

在三角形与梯形篇中,我们引入 border 属性,通过对边框的巧妙控制,写出了梯形与三角形。

在弧形篇中,我们再次引入 border-radius 属性,通过对圆角边框的灵活运用,写出了圆形、椭圆形、扇形、吃豆人和鸡蛋。

那么今天,我们再次引入一个 box-shadow 属性,通过对阴影效果的灵活使用,写出更多令人不可思议的多边形吧!


一、阴影效果

1. 基本用法

在 CSS 中,box-shadow 属性用于在元素的框架上添加阴影效果。

width: 800px;
height: 400px;
background: red;
box-shadow: 50px 25px green;

可以看到,box-shadow 属性后面跟了三个值:

box-shadow: <offset-x> <offset-y> <color>;

  • offset-x:阴影在水平方向的偏移量,水平向右为正方向;

  • offset-x:阴影在竖直方向的偏移量,竖直向下为正方向;

  • color:阴影颜色。

2. 模糊半径

接下来,我们添加一个值:

width: 800px;
height: 400px;
background: red;
box-shadow: 50px 25px 25px green;

box-shadow: <offset-x> <offset-y> <blur-radius> <color>;

blur-radius:

  • 阴影模糊半径;

  • 值越大,模糊面积越大,阴影就越大越淡;

  • 不能为负值;

  • 默认为 0,此时阴影边缘锐利。

对于长而直的阴影边缘,它会创建一个过渡颜色用于模糊 以阴影边缘为中心、模糊半径为半径的局域,过渡颜色的范围在完整的阴影颜色到它最外面的终点的透明之间。

关于数字图像处理的模糊算法,这里就不做展开了。

3. 扩散半径

接下来,我们再添加一个值:

width: 800px;
height: 400px;
background: red;
box-shadow: 50px 25px 25px 25px green;

box-shadow: <offset-x> <offset-y> <blur-radius> <spread-radius> <color>;

spread-radius:

  • 阴影扩散半径;

  • 取正值时,阴影扩大;

  • 取负值时,阴影收缩;

  • 默认为 0,此时阴影与元素同样大;

  • 需要考虑 inset

4. 内阴影

此时,咱们又看到了一个关键词 inset,我们来试试看是什么样的。

width: 800px;
height: 400px;
background: red;
box-shadow: inset 50px 25px green;

可以看到,如果没有指定 inset,默认阴影在边框外,即阴影向外扩散。使用 inset 关键字会使得阴影落在盒子内部,这样看起来就像是内容被压低了。此时阴影会在边框之内(即使是透明边框)、背景之上、内容之下。

具有 inset 关键词的时候,同时添加上模糊半径和扩散半径的情况,这里就留给大家自己去尝试了。

5. 多个阴影

我们可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开。

width: 800px;
height: 400px;
background: red;
box-shadow: 50px 25px green, 25px 50px blue;

可以看到,每一个阴影效果都是独立的,可以放开随意控制。

width: 800px;
height: 400px;
background: red;
box-shadow: 50px 25px 25px 25px green, inset 25px 50px 25px blue;

box-shadow 属性还可以设置 none 关键字,将其元素设置为没有阴影效果。

box-shadow 属性与别的属性相结合,还可以得到很多不可思议的效果,这里就不再展开了。


二、月牙

我们设想一个问题,当一个元素同时设置了 border-radius 属性,那么阴影也会有圆角效果吗?

咱们不妨直接在上一篇章弧形篇中的圆形的基础上,添加一个阴影看看效果:

width: 800px;
height: 800px;
background: yellow;
border-radius: 50%;
box-shadow: 50px 50px red;

我们把圆形设置为黄色,阴影设置成红色,得到如下结果:

 

可以看到,阴影也会有圆角效果。

既然如此,那么我们设置圆的颜色为透明色:

width: 800px;
height: 800px;
background: transparent;
border-radius: 50%;
box-shadow: 50px 50px red;

就这样,简简单单的,我们就写了一个月牙出来了!


三、太空入侵者

咱们来思考一个问题,如果一个元素,阴影的偏移量很大,超过了元素本身的大小,岂不是元素和阴影分离了呢?

width: 200px;
height: 200px;
background: red;
box-shadow: 300px 300px green;

看看结果:

 

可以看到,阴影和元素本身分离了,但是阴影和元素本身是全等(大小和形状都一样)的。

前面说了,我们可以在同一个元素上设置多个阴影效果,并用逗号将他们分隔开。那么,我们是否可以借助这个特性,写出更加奇特的效果了呢?

width: 50px;
height: 50px;
background: red;
box-shadow: 0 0 0 50px red,
  0 50px 0 50px red,
  -125px 75px 0 25px red,
  125px 75px 0 25px red,
  -150px -150px 0 0 red,
  150px -150px 0 0 red,
  -100px -100px 0 0 red,
  100px -100px 0 0 red,
  -150px -50px 0 0 red,
  -100px -50px 0 0 red,
  100px -50px 0 0 red,
  150px -50px 0 0 red,
  -200px 0 0 0 red,
  -150px 0 0 0 red,
  150px 0 0 0 red,
  200px 0 0 0 red,
  -250px 50px 0 0 red,
  -200px 50px 0 0 red,
  200px 50px 0 0 red,
  250px 50px 0 0 red,
  -250px 100px 0 0 red,
  250px 100px 0 0 red,
  -250px 150px 0 0 red,
  -150px 150px 0 0 red,
  150px 150px 0 0 red,
  250px 150px 0 0 red,
  -100px 200px 0 0 red,
  -50px 200px 0 0 red,
  50px 200px 0 0 red,
  100px 200px 0 0 red;

这样,我们写了 30 个阴影,控制了每一个阴影的偏移位置和部分阴影的扩散。于是,我们得到了古老 FC 游戏小蜜蜂中的太空入侵者。

 

是不是很神奇?如此复杂的形状,我们只用了一个 div 元素。

由于我们可以定义任意多个阴影,并且可以控制每一个阴影的偏移量,同时每一个阴影都可以独立控制其模糊半径和扩散半径。因此,理论上,我们可以只用一个 div 元素写出任何我们想要的形状!

由于多边形是没有固定形状的,不同形状的所属规律也是不同的。因此,对于咱们的多边形篇,我们就这样写了一个由弧形组成的月牙形状和由直线组成的太空入侵者形状。聪明的您,我猜一定可以写出更多不可思议的形状吧!

好滴,咱们的多边形篇就先写到这里吧!这里留下一个问题,阴影和元素本身是全等(形状和大小一样)的,加上扩散也最多是相似(形状一样,大小不一样)的。那么我们要写更加不可思议的形状,有没有更好的方法呢?

敬请期待我们的下一个篇章 —— 伪元素篇

 

关注“临界程序员”微信公众号,为您送上更多精彩内容!

标签:box,多边形,50px,阴影,HTML,只用,25px,shadow,red
From: https://blog.csdn.net/Conan9912345/article/details/141104666

相关文章

  • [HTML5] 一文读懂H5新特性的应用
    文章目录一、HTML5新增语义化标签1.`<header>`标签语法使用场景常用属性示例代码2.`<footer>`标签语法使用场景常用属性示例代码3.`<nav>`标签语法使用场景常用属性示例代码4.`<article>`标签语法使用场景常用属性示例代码5.`<section>`标签语法使用场景......
  • HTML并不简单读书笔记-2
    第二章a元素最简单的a标签,点击后跳转到对应的页面,再加上herf属性<ahref="http://www.w3school.com.cn">W3School</a>rel属性浏览器支持30多个rel属性下面介绍重点关注的值rel=“nofollow”这是seo的常用策略,告诉搜索引擎不要追踪这个链接。在以下两种情況下需要......
  • HTML5
    HTML5初识HTML网页基本标签图像,超链接,网页布局列表,表格,媒体元素表单及表单应用表单初级验证1.1什么是HTMLHyperTextMarkupLanguage(超文本标记语言)超文本包括:文字,图片,音频,视频,动画等Html5+Css3—>现在使用的版本Html5提供了一些新的元素和一些有趣的新特性,同时也......
  • 调用百度api的情绪分析网站(Flask+HTML)搭建(附超详细代码)
      概要:本文调用多个api接口来进行不同类型(数据文件)情绪分析处理,并利用flask框架与前端联调将自己的情绪分析项目部署到服务器端。。实现下图功能。(第一篇文章小小记录下,要是有帮助就点个赞叭)一.免费申请百度api并调用首先在百度智能云中申请免费的自然语言处理api选......
  • html简单介绍-史上最简单版
    1.html介绍(了解)1.网站和网页区别网站=网页+后端(java+数据库)网页:显示给用户看的2.html作用:书写网页的。2.使用记事本创建html(了解)<!--根标签--><html><!--头标签--><head><!--网页的标题标签--><title>这是第一个html</title></hea......
  • 横向滚动条 css js html
    目的:1.练习手写滚动条2.市面上多是竖向滚动条,横向滚动条较少3.横向滚动条,需要滑动到容器底部才能使用,不方便,因此想自己写一个横向滚动条放置在容器内部的视口高度的最低处3.问题复现:如果容器的内容超过了容器的宽度,就会出现横向滚动条(暂不考虑换行),但是如果该容器的高......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript学校网站(学生信息管理系统)
    HTML+CSS+JS【学校网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • HTML 引用
    HTML中用于引文、引用和定义的几个重要元素。这些元素不仅帮助改善文档的可读性和结构,还提供了额外的语义信息,有助于搜索引擎优化(SEO)和辅助技术(如屏幕阅读器)的理解。以下是您提到的每个元素的简要回顾和额外说明:<q>元素用途:定义短的行内引用。浏览器表现:通常会自动在引用的......
  • 深入了解HTML链接:从基础到进阶——WEB开发系列06
    超链接是互联网中最有趣的创新之一,自互联网诞生起,它们就一直是互联网的一个核心特性,使网络成为一个互联的系统。超链接允许我们将文档连接到其他文档或资源,甚至是文档中的特定部分。通过一个简单的网址,可以提供应用程序。几乎所有网络内容都可以被转换为链接,点击或激活这些超链......
  • 425.响应式的境外旅游私人订制网站 大学生期末大作业 Web前端网页制作 html+css+js
    目录一、网页概述二、网页文件 三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐欢迎光临仙女的网页世界!这里有Web前端网页制作的各行各业的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这......