css 巧用border属性制作各种图形(矩形,梯形,三角形)
border梯形
为了观察边框究竟是哪一种拼接方式,为边框设置不同的颜色背景,代码如下:
#content{
width: 100px;
height: 100px;
background: #FFC;
border-top: 80px solid #0F0;
border-right: 80px solid #09C;
border-bottom: 80px solid #9F9;
border-left: 80px solid #FC3;
}
上面的CSS控制ID属性为content的div块的属性,显示效果如下:
从上面的效果很显然了,每个边的border是梯形无缝拼接的,而不是矩形拼接的。
那么我们就可以把另外三个边框的颜色设置为transparent,这样就可以得到一个梯形啦!
#content{
width: 200px;
height: 200px;
border-top: 80px solid #0F0;
border-right: 80px solid transparent;
border-bottom: 80px solid transparent;
border-left: 80px solid transparent;
}
显示效果如下:
那就有疑问了,可不可以通过不定义其他三条边框来达到只显示一条边框的梯形呢?
#content{
width: 200px;
height: 200px;
border-top: 80px solid #0F0;
}
像上面的代码,我们期望的是显示盒模型中的上边框梯形,但是实际的显示效果是下面这样的:
是一个矩形!而且矩形的宽就是200px,即我们定义的内容的宽度,奇怪!我们还不相信,于是再换一换浏览器试试,然而FF,IE,Chrome都是这样的。我们可以想到这样一种解释,如果边框不定义,那么这条边框就表现为矩形,如果边框定义,那么它就表现为梯形。这样也就可以解释上面的例子为什么会出现矩形了。由于左右边框都没有定义,所以属于左右边框区域的整个矩形都消失了,留下的上边框自然直剩下一个矩形啦!
border三角形
既然可以使用border实现梯形,可不可以实现三角形呢。梯形在上底边变为0的时候,梯形会退化为三角形,我想你已经有了答案,如果设置content的height和width都为0时,我们就能得到四个三角形:
#content{
width: 0px;
height: 0px;
border-top: 80px solid #0F0;
border-right: 80px solid #09C;
border-bottom: 80px solid #9F9;
border-left: 80px solid #FC3;
}
我们当然也可以通过设置其他边的border的背景为transparent实现一个或者2个或者3个三角形咯!
#content{
width: 0px;
height: 0px;
border-top: 80px solid #0F0;
border-right: 80px solid #09C;
border-bottom: 80px solid transparent;
border-left: 80px solid transparent;
}
当然,如果不定义某些边的border,不定义的border就会表现为矩形。
#content{
width: 0px;
height: 0px;
border-top: 80px solid #0F0;
border-right: 80px solid #09C;
border-left: 80px solid #FC3;
}
/*没有定义border-bottom的的情况下,下边border的整个矩形将会消失
如果同时没有定义左右边框,或者上下边界的话,就会什么都不显示。当然也可以一边不定义,一边隐藏,就会有很多种图形啦。
更多的,可以用在表格中画斜线,多个border叠加,和before,after伪元素的结合起来就有很多妙用啦!关键是要理解border的具体表现形式。
- 使用JPA中@Query 注解实现update 操作
- 配合dedecms内容模型实现后台输入栏目id前端输出文章列表
- SpringBoot之前端文件管理
- Spring Boot 设置静态资源访问
- IDEA更换主题
- 用正则表达式给字符串属性值都加上双引号
- Spring Boot修改启动端口
- Packet for query is too large (12238 > 1024). You can change this value
- win10下端口被占用解决办法
- 微信小程序开发教程第九章:微信小程序拍照收纳开发以及删除名片等
- centos 安装sbt
- 微信小程序开发教程第七章:微信小程序编辑名片页面开发
- idea中使用scala运行spark出现Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Gen
- 使用JPA中@Query 注解实现update 操作
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- RTSP协议视频流媒体播放器EasyPlayer-RTSP-OCX接口文档API接口函数定义
- Python逐行写入
- C++ this 指针
- C++ push方法与push_back方法
- 别人变强靠天赋,而我,靠思维导图
- Spring Boot 五种热部署方式
- 二叉树最小深度
- 一日一技:限定Python函数只能被特定函数调用
- 四种ABAP单元测试隔离(test isolation)技术
- Python使用对象方式获取字典的值
- Hive整合HBase实现数据同步
- [数据结构与算法] 盘点工作中常用的算法
- MyBatis_resultMap 的关联方式实现多表查询(多对一)
- MyBatis_resultMap的N+1方式实现多表查询(多对 一)
- LeetCode 63. 不同路径 II