CSS-实现三角形、梯形、平行四边形、圆形、椭圆形、对话框、自适应正方形

本文篇幅较长,希望能坚持看完,转载请注明出处,如果觉得好文请给个赞吧

CSS实现梯形

CSS实现三角形和梯形主要是依靠border是梯形的特性来做的,有点像相框的那种感觉。

首先我们先给一个正方形设置比较宽的边框。如下。

<div id="test1"></div>
    <style>
#test1{
    width: 50px;
    height: 50px;
    background: purple;
    border-top: 50px solid red;
    border-bottom: 50px solid green;
    border-left: 50px solid blue;
    border-right: 50px solid yellow;
    margin:0 auto;
}
</style>

然后把其他颜色设置成看不见的颜色,我们就得到了梯形

<div id="test2"></div>
<style>
    #test2{
        width: 50px;
        height: 50px;
        background: transparent;
        border-top: 50px solid transparent;
        border-bottom: 50px solid green;
        border-left: 50px solid transparent;
        border-right: 50px solid transparent;
    }
</style>

CSS实现三角形

三角形同理可得,只要把中间的正方形的宽高设为0就行,如下

<div id="test3"></div>
<style>
    #test3{
        width: 0;
        height: 0;
        display: inline-block;
        background: transparent;
        border-top: 50px solid transparent;
        border-bottom: 50px solid green;
        border-left: 50px solid transparent;
        border-right: 50px solid transparent;
    }
</style>

此外,我们通过设置不同边框的宽度或者颜色,可以得到不一样的三角形或者梯形

CSS实现平行四边形

我们既然有了三角形和梯形或者长方形,可以得到平行四边型呢!!!!

首先,先来两个三角形,如下

再通过CSS3中的transform属性将两个三角形移动下位置,就可以实现自己的要求啦。当然你也可以用绝对定位来移动。

CSS实现圆形

使用CSS3属性border-radius可以实现一个圆形。

<div id="circle"></div>
<style>
    #circle{
        width: 100px;
        height: 100px;
        background: blue;
        border-radius: 50px;
    }
</style>

CSS实现椭圆形

这时候我们就要好好了解下border-radius这个属性了,border-radius有一个水平半径和一个垂直半径

border-radius: 水平半径 / 垂直半径;//当然也可以单独设置某个角的水平半径和垂直半径

border-radius: 左上角水平半径、 右上角水平半径、 右下角水平半径、 左下角水平半径 / 左上角垂直半径、 右上角垂直半径、 右下角垂直半径、 左下角垂直半径

好了那么我们就可以实现一个椭圆形了

<div id="oval"></div>
<style>
    #oval{
        width: 100px;
        height: 50px;
        background: blue;
        border-radius: 50px / 25px;
    }
</style>

等价于

<div id="oval"></div>
<style>
    #oval{
        width: 100px;
        height: 50px;
        background: blue;
        border-top-left-radius: 50px 25px;
        border-top-right-radius: 50px 25px;
        border-bottom-left-radius: 50px 25px;
        border-bottom-right-radius: 50px 25px;
    }
</style>

CSS实现对话框

好了有了之前的三角形、椭圆形,我们就可以形成各种各样的对话框啦~~~~~~

主要实现原理就是通过两个三角形的“叠加覆盖”,来形成对话框的尖角

样例1:

CSS”实现对话框效果一

<div class="test1">
    <div class="bot">&nbsp;</div>
    <div class="top">&nbsp;</div>
    CSS实现对话框效果一
</div>
<style>
.test1{width:300px;height: 30px; padding:30px 20px; margin-left:100px; background: #eb7956; position:relative;}
.test1 div{ width:0; height:0; position:absolute;}
.test1 .bot{
    border-width:20px;
    border-style:solid;
    border-color:#ffffff #eb7956 #eb7956 #ffffff;
    left:-40px;
    top:40px;
}
.test1 .top{
    border-width:10px 20px;
    border-style:solid;
    border-color: transparent  #ffffff #ffffff transparent ;
    left:-40px;
    top:60px;
}
</style>

样例2:

CSS实现对话框效果二

<div class="test2">
    <div class="bot"></div>
    <div class="top"></div>
    CSS实现对话框效果e二
</div>
<style>
    .test2{width:300px; padding:30px 20px; border:5px solid #beceeb; position:relative;}
    .test2 div{width:0; height:0; font-size:0; overflow:hidden; position:absolute;}
    .test2 div.bot{
        border-width:20px;
        border-style:solid dashed dashed;
        border-color:#beceeb transparent transparent;
        left:80px;
        bottom:-40px;
    }
    .test2 div.top{
        border-width:20px;
        border-style:solid dashed dashed;
        border-color:#ffffff transparent transparent;
        left:80px;
        bottom:-33px;
    }
</style>

样例3

<div class="test3">
    <div class="bot">&nbsp;</div>
    <div class="top">&nbsp;</div>
    CSS实现对话框效果三
</div>
<style>
.test3{
    width:300px;
    height: 30px;
    border-radius: 160px/45px;
    padding:30px 20px;
    margin-left:100px;
    background: #eb7956;
    position:relative;
}
.test3 div{ width:0; height:0; position:absolute;}
.test3 .bot{
    border-width:20px;
    border-style:solid;
    border-color:transparent #eb7956 #eb7956 transparent;
    left:-30px;
    top:40px;
}
.test3 .top{
    border-width:10px 20px;
    border-style:solid;
    border-color: transparent  #ffffff #ffffff transparent ;
    left:-30px;
    top:60px;
}
</style>

此外,IE6下有些bug需要做下兼容

1. IE6的奇偶bug
如果定位外框高度或是宽度为奇数,则IE6下,绝对定位元素的低定位和右定位会有1像素的误差。所以,尽量保证外框的高度或宽度为偶数值。

2. IE6的空div莫名高度bug
IE6下,空div会有莫名的高度,也就是说height:0;不顶用,此时形成的尖角的实际占高于其他浏览器是有差异的。可使用font-size:0; + overflow:hidden;修复此问题。

3. IE6不支持实线边框透明transparent属性
IE6不支持实线边框透明transparent属性,当某边框设置为transparent属性,且有宽度的话,那么透明会以默认的黑色显示的。解决方法有两个,一是将需要隐藏的颜色设置为背景色,这样与透明效果一样,此法有局限性,在复杂“边框法”应用下是行不通的;二是可以使用dashed代替solid,可以实现IE6下边框transparent透明。为什么能够实现透明?您可以参考默尘的这篇文章Dotted&Dashed终极分析及IE6透明边框,我说点题外话,其对原因的解释似乎说的通,但是,是不是如此,我是相当怀疑的,我尚未有时间验证,这个可以标记一下。

参考:CSS实现气泡边框

CSS实现自适应正方形

正方形应该大家都会,那么如何实现自适应的正方形呢?有两种方法

方法一:使用padding-bottom实现正方形

使用padding-bottom实现正方形

<div id="test7">
    <div class="placeholder">使用padding-bottom实现正方形</div>
</div>
<style>
    #test7{
        width: 400px;
        background: gray;
    }
    .placeholder {
        width: 30%;
        padding-bottom: 30%;/* padding百分比相对父元素宽度计算,用padding去填充height*/
        height: 0;/*避免被内容撑开多余的高度 */
        background: #4acfff;
    }
</style>

方法二:使用css3单位vw

原理同padding,也是利用了vw是相对宽度,不过要注意是相对视窗宽度哦

<div class="vw"></div>
<style>
    .vw {
        width: 50%;
        height: 50vw;
        background: pink;
    }
</style>

补充:css中的单位

  • px:绝对单位,页面按精确像素展示
  • em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。
  • rem:相对单位,可理解为”root em”, 相对根节点html的字体大小来计算,CSS3新加属性,chrome/firefox/IE9+支持
  • vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%。
  • vh:viewpoint height,视窗高度,1vh等于视窗高度的1%。
  • vmin:vw和vh中较小的那个。
  • vmax:vw和vh中较大的那个。
  • vw, vh, vmin, vmax:IE9+局部支持,chrome/firefox/safari/opera支持,ios safari 8+支持,android browser4.4+支持,chrome for android39支持
  • %:百分比
  • in:寸
  • cm:厘米
  • mm:毫米
  • pt:point,大约1/72寸
  • pc:pica,大约6pt,1/6寸
  • ex:取当前作用效果的字体的x的高度,在无法确定x高度的情况下以0.5em计算(IE11及以下均不支持,firefox/chrome/safari/opera/ios safari/android browser4.4+等均需属性加么有前缀)
  • ch:以节点所使用字体中的“0”字符为基准,找不到时为0.5em(ie10+,chrome31+,safair7.1+,opera26+,ios safari 7.1+,android browser4.4+支持)

分类: H5+CSS3

原文地址:https://www.cnblogs.com/WWZ1515389790/p/8695420.html

时间: 2024-08-29 14:41:05

CSS-实现三角形、梯形、平行四边形、圆形、椭圆形、对话框、自适应正方形的相关文章

各种demo:css实现三角形,css大小梯形,svg使用

各种demo: 1.css实现正方形 思路:width为0:height为0:使用boder-width为正方形的边长的一半,不占任何字节:border-style为固体:border-color为正方形的填充色. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css&qu

CSS3边框属性_圆角、CSS画基本图形(圆形、三角形、多边形、爱心、八卦等)

有一些需要用到CSS3的属性,所以在你打开这篇文章的时候,用的是firefox或者chrome,当然IE也能看一部分 1.正方形 div{ background:#F00; width:100px; height:100px; } 2.长方形 div{ background:#F00; width:200px; height:100px; } 3.圆形 div{ width: 100px; height: 100px; background: red; -moz-border-radius: 5

三种纯CSS实现三角形的方法

看到像上图这样的 tip 的小三角,你会怎么办? 切个图上去?恩,不错,简单,兼容性也一级棒,不但好控制,那点小东西也增加不了多少图片的大小.但有没有更好更讲究技巧的办法呢?哈哈,那必须有啊,而且还不止一种呢:) 纯 CSS 做三角形的方法,目前我知道三种,分别是利用 border 属性,“◆”字符,和 CSS3 transfrom 做 45 度旋转实现的,CSS3的方法是在码头哥的博客上学到的,很感谢你们的分享,前端有你们更精彩! 1.利用 border 属性实现三角形 这个原理很简单,我我们

css绘制三角形

今天看到人家用css画了一个三角形,简简单单几行代码,惊讶css其实还有很多我们不知道的东西. 三角形其实还是可以用在很多地方的.其实就那么几行代码直接贴上: div.arrow-up {     width: 0;     height: 0;     border-left: 50px solid transparent;     border-right: 50px solid transparent;     border-bottom: 50px solid #2f2f2f;     

【转】纯CSS写三角形-border法[晋级篇01]

(1)有边框的三角形 我们来写下带边框的三角形. 如果是一个正方形,我们写边时,会用到border,但我们这里讨论的三角形本身就是border,不可能再给border添加border属性,所以我们需要用到其他办法. 最容易想到的,是叠加层.思路是将两个三角形叠加在一起,外层三角形稍大一些,颜色设置成边框所需的颜色:内层三角形绝对定位在里面.整体就能形成带边框三角形的假象. 这里就涉及到一个绝对定位的问题,上.下.左.右四种方向的三角形相对于父级定位是不同的.首先我们来看下,当定位都为0(left

经典CSS实现三角形图标原理解析

前言: 在写这篇文章之前,我也看过很多前端大神写的代码,But,都只是粘贴代码和给出显示效果,对于初学者来说大家都喜欢刨根问底,为什么要这样做呢? 接下来就让我给大家分享一下我对CSS实现三角形的理解: border边框语法: border 四条边框设置 border-left 设置左边框,一般单独设置左边框样式使用 border-right 设置右边框,一般单独设置右边框样式使用 border-top 设置上边框,一般单独设置上边框样式使用 border-bottom 设置下边框,一般单独设置

css制作三角形,下拉框三角形

网站制作中常常需要下拉框,而如果下拉框如果只是单纯的矩形则会显得太过单调,所以这次教大家利用css制作三角形放在矩形上面 首先利用css制作三角形 div { width:0px; height:0px; border-top:20px solid transparent; border-left:20px solid transparent; border-right:20px solid transparent; border-bottom:20px solid green; } <div>

CSS制作三角形和按钮

CSS制作三角形和按钮 用上一篇博文中关于边框样式的知识点,能制作出三角形和按钮. 我先说如何制作三角形吧,相信大家在平时逛网站的时候都会看到一些导航栏中的三角形吧,比如说: 网易首页的头部菜单栏中,也会有这样的三角形 当鼠标经过时,三角形会垂直翻转,如下 现在我分享制作三角形的做法,主要是利用边框做成的 首先,四个三角形合并在一起的正方形,也就是正方形的四条边框形成的四个三角形 源代码: <!DOCTYPE html> <html lang="en"> <

利用div和css制作三角形效果

利用div和css制作三角形效果:本章节介绍一下如何利用div和css实现三角形效果,虽然看起来表神奇,但是原理是非常的简单.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁