HTML + CSS 连载 | 40 - border 图形

一、border 图形实现

实际开发中 border 属性主要是用来给盒子添加边框的,但是在开发中我们也可以利用边框的一些特性来实现一些形状,比如一些页面中常用到的三角形等。

接下来我们可以使用 border 属性来实现一个三角形,首先创建 HTML 页面,添加一个盒子,并且给盒子设置一个边框,具体代码如下:

HTML 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      margin: 0 auto;
      width: 100px;
      height: 100px;
      background-color: #f00;
      
      border: 30px solid olivedrab;
    }
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

在浏览器中打开 HTML 页面,具体效果如下:

此时盒子所占据的宽度为 (100+30+30)px,我们需要设置 box-sizing 属性的属性值为 border-box,让盒子所占据的宽度包含内容和边距的长度,具体 CSS 代码如下所示:

CSS 复制代码
.box {
  margin: 0 auto;
  width: 100px;
  height: 100px;
  background-color: #f00;

  border: 30px solid olivedrab;

  box-sizing: border-box;
}

刷新页面,效果如下:

可以看到盒子变小了,接下来我们需要设置 border 四条边的样式,给每条边一个不同的背景颜色,具体 CSS 代码如下:

CSS 复制代码
.box {
  margin: 0 auto;
  width: 100px;
  height: 100px;
  background-color: #f00;

  border: 30px solid olivedrab;
  border-right-color: blue;
  border-bottom-color: aqua;
  border-left-color: blueviolet;

  box-sizing: border-box;
}

刷新页面,效果如下:

接着我们尝试把增加 border 的宽度为 40px:

CSS 复制代码
border: 40px solid olivedrab;

刷新页面,效果如下:

再次增加 border 的宽度为 50px:

CSS 复制代码
border: 50px solid olivedrab;

刷新页面,效果如下:

可以看到此时内容的宽度已被压缩为0,整个盒子所占据的宽度就是 border 的宽度,设置其他几条变为透明,具体 CSS 代码如下:

CSS 复制代码
.box {
  margin: 0 auto;
  width: 100px;
  height: 100px;
  background-color: #f00;

  border: 50px solid olivedrab;
  /* border-right-color: blue;
  border-bottom-color: aqua;
  border-left-color: blueviolet; */
  /*设置为透明*/
  border-right-color: transparent;
  border-bottom-color: transparent;
  border-left-color: transparent;

  box-sizing: border-box;
}

再次刷新页面,效果如下:

还需要将背景颜色也设置为透明,或者干脆不设置背景颜色:

CSS 复制代码
background-color: transparent;

再次刷新页面,效果如下:

可以看到我们已经实现了一个三角形,我们可以通过调整边框的宽度来实现大小不同的三角形。

二、border 图形旋转

实现了三角形之后还可以通过 transform 属性来让三角形选中,比如设置如下 CSS 代码:

CSS 复制代码
/*旋转*/
transform: rotate(90deg);

刷新页面,效果如下:

可以看到三角形旋转了 90 度,我们也可以设置旋转的中心点,比如下面 CSS 代码所示:

CSS 复制代码
/*旋转*/
transform: rotate(90deg); 
transform-origin: center 25%;

再次刷新页面,效果如下:

可以看到此时旋转后的位置与不设置中心点之前旋转的位置发生了偏移,当然我们也可以设置旋转更大的角度,比如下面的 CSS 代码:

CSS 复制代码
/*旋转*/
transform: rotate(180deg); 
transform-origin: center 25%;

刷新页面,效果如下:

利用 border 或者 CSS 特性我们可以做出很多图形,可以通过这个网站来查看更多的图形的实现。

相关推荐
小羊没烦恼!3 分钟前
T-SQL查询高级—SQL Server索引中的碎片和填充因子
开发语言·前端·javascript·数据库·后端·python·web安全
定栓31 分钟前
Webpack迁到Vite第一节:模块系统迁移:require → import
运维·前端·webpack
小熊在忙fpga40 分钟前
N32G430芯片的flash表示
前端·javascript·html
Data analyse4561 小时前
App埋点版本兼容的字段迁移校验
大数据·运维·服务器·前端·数据库·数据分析
todoitbo1 小时前
本来只想给内网开个口子,Natapp 却多给了一道防护
前端·javascript·vue.js·内网穿透·网络防护·natapp
会灭火的程序员1 小时前
SuperMap AgentX Server智能体接入WEB应用技术文档
前端·supermap·agentx·agentx server
CRMEB1 小时前
商品 SKU 设计,从简单规格到多规格踩过什么
java·前端·数据库·开源
Chloe.Zz1 小时前
一篇入门Agent
开发语言·前端·javascript
java1234_小锋1 小时前
【技术专题】HTML5 网页技术 - HTML5 表格标签
前端·html·html5
雪芽蓝域zzs1 小时前
JS 项目转 TS 项目(Vue3 + 若依这类后台项目)完整改造清单
前端·vue.js