当前位置: 首页 > news >正文

2017年总结的前端文章——border属性的多方位应用和实现自适应三角形

border属性是在实际的应用中使用频率比较高的一个属性,除了作为边框使用,利用border属性的一些特征以及表现方式,可以在实现一些比较常见的效果(如等高布局,上下固定内容滚动布局和绘制CSS图标等),利用css3新增的属性值(如使用图片填充边框)可以实现一些更复杂的效果。

本文不介绍border的属性的基本应用方法,将直接介绍如何通过border属性实现一些常见的效

利用border画三角形和梯形等多边形

在CSS中,常见的平面图形为矩形以及圆形。但是难免有些情景需要我们利用CSS去绘制三角形、梯形和平行四边形等。此时我们可以利用border在渲染时的一些表现特点来实现这些功能。以下讲解如何一步一步得到三角形。
首先我们写一个div,样式如下

 .border {
     width: 200px;   
     height: 100px;   
     margin: 0 auto;   
     border-top: 40px solid red;   
     border-bottom: 40px solid green;   
     border-left: 40px solid yellow;   
     border-right: 40px solid blue;   
 }
View Code

浏览器渲染后效果如下:

我们发现,通过给div的四个边框设置不同的颜色,其渲染后的表现形式为四个梯形组成的边框。
如果我们把高度定义为0,那么渲染后如下: 

如果我们再把宽度设置为0,结果如下:

到此为止,通过对比以上定义的不同的样式,我们发现,在CSS中,边框的表现实际上以梯形的形式来渲染的(这可能与 groove等3D效果的属性值有关,具体没去深入研究)。当元素的宽高为0时就会变成挤在一起的四个三角形。因此,我们可以想到,如果把其中的三个边框的颜色定义为透明色 transparent,然后通过包裹在一个外层容器上,并给外层容器设置 overflow:hidden,那么我们将得到一个等腰梯形或者三角形。现在我们把css修改如下:
<div class="box">
    <div class="border">

    </div>
</div>
View Code
        .box{
            width: 200px;
            height: 200px;
            margin: auto;
            overflow: hidden;
        }
        .border{
            margin: 0 auto;
            border-top: none;
            border-bottom: 40px solid green;
            border-left: 40px solid transparent;
            border-right: 40px solid transparent;
        }
View Code
我们将得到以下梯形:

将样式设置为如下:

<div class="border">

</div>
View Code
        .border{
            width: 0;height: 0;
            margin: 0 auto;
            border-top: 0 solid transparent;
            border-bottom: 100px solid green;
            border-left: 100px solid transparent;
            border-right: 100px solid transparent;
        }
View Code

我们将得到以下三角形:

由于所有的二维多边形可以划分为多个三角形组成,加上 border这种表现形式的基础,我们可以通过设置不同边框宽度值、颜色以及借住 伪元素或者多个元素的拼接可以实现更为复杂的一些图形,理论上我们可以用CSS绘制任何的多边形。比如多角星,菱形,以及我们常见的聊天气泡等。

利用border实现左右两栏等高布局

实现这种布局有很多解决方案,比如利用padding和margin相互抵消的方法即可实现。但是如果利用border来实现的话,可能可以使CSS更加简洁,适用性和兼容性也会更高。比如针对第一张图的效果,我们有如下html结构。

<div class="menu">
    <ul>
        <li>首页</li>
        <li>商品管理</li>
        <li>营销中心</li>
        <li>会员管理</li>
        <li>系统设置</li>
    </ul>
</div>
<div class="content">这里是内容区域</div>
View Code
.menu {
    float: left;
    width: 200px;
    color:  #FFF;
}
.content {
    border-left:  200px solid #40403b;/*这里是主要的样式*/
    padding: 20px;
    height: 1000px; /* 这里代表内容区域 */
}
View Code

由于border宽度不支持百分比值,所以这种实现方法的缺点是难以直接做到左右两侧宽度按比例自适应。

 

转载于:https://www.cnblogs.com/QianBoy/p/8150522.html

相关文章:

  • django之中间件
  • 推荐系统的基本概念及其在各个领域的应用
  • Linux 计划任务
  • 分布式系统事务一致性解决方案
  • Linux如何让进程在后台运行的三种方法详解
  • C#启动或停止 计算机中“服务”
  • Bootstarp学习
  • rsync远程同步
  • python基础-字符串
  • 2016级算法期末上机-A.简单·Bamboo's Fight with DDLs I
  • 图解 Java 内存模型
  • 【BZOJ2132】圈地计划(最小割)
  • 【Java基础】14、位与()操作与快速取模
  • mysql中主键和唯一键的区别
  • python:常用模块一
  • 《剑指offer》分解让复杂问题更简单
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Druid 在有赞的实践
  • HTTP那些事
  • leetcode388. Longest Absolute File Path
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 简单数学运算程序(不定期更新)
  • 解决iview多表头动态更改列元素发生的错误
  • 坑!为什么View.startAnimation不起作用?
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 推荐一个React的管理后台框架
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • UI设计初学者应该如何入门?
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​决定德拉瓦州地区版图的关键历史事件
  • ###C语言程序设计-----C语言学习(6)#
  • (C#)获取字符编码的类
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (二)WCF的Binding模型
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (黑马C++)L06 重载与继承
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • .cfg\.dat\.mak(持续补充)
  • .equals()到底是什么意思?
  • .Net - 类的介绍
  • .NET : 在VS2008中计算代码度量值
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 怎么循环得到数组里的值_关于js数组
  • .net6+aspose.words导出word并转pdf
  • .NET性能优化(文摘)
  • // an array of int
  • /etc/motd and /etc/issue
  • /usr/bin/env: node: No such file or directory
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [2]十道算法题【Java实现】
  • [20170728]oracle保留字.txt
  • [AIGC] MySQL存储引擎详解
  • [Android Pro] Notification的使用