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

CSS实现梯形

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

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

 

 
  1. <div id="test1"></div>
  2. <style>
  3. #test1{
  4. width: 50px;
  5. height: 50px;
  6. background: purple;
  7. border-top: 50px solid red;
  8. border-bottom: 50px solid green;
  9. border-left: 50px solid blue;
  10. border-right: 50px solid yellow;
  11. margin:0 auto;
  12. }
  13. </style>

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

 

  1. <div id="test2"></div>
  2. <style>
  3. #test2{
  4. width: 50px;
  5. height: 50px;
  6. background: transparent;
  7. border-top: 50px solid transparent;
  8. border-bottom: 50px solid green;
  9. border-left: 50px solid transparent;
  10. border-right: 50px solid transparent;
  11. }
  12. </style>

CSS实现三角形

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

 
 
  1. <div id="test3"></div>
  2. <style>
  3. #test3{
  4. width: 0;
  5. height: 0;
  6. display: inline-block;
  7. background: transparent;
  8. border-top: 50px solid transparent;
  9. border-bottom: 50px solid green;
  10. border-left: 50px solid transparent;
  11. border-right: 50px solid transparent;
  12. }
  13. </style>
此外,我们通过设置不同边框的宽度或者颜色,可以得到不一样的三角形或者梯形
 

 
 
 

CSS实现平行四边形

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

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


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

 
 

CSS实现圆形

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

  1. <div id="circle"></div>
  2. <style>
  3. #circle{
  4. width: 100px;
  5. height: 100px;
  6. background: blue;
  7. border-radius: 50px;
  8. }
  9. </style>

CSS实现椭圆形

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

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

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

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

  1. <div id="oval"></div>
  2. <style>
  3. #oval{
  4. width: 100px;
  5. height: 50px;
  6. background: blue;
  7. border-radius: 50px / 25px;
  8. }
  9. </style>

等价于

  1. <div id="oval"></div>
  2. <style>
  3. #oval{
  4. width: 100px;
  5. height: 50px;
  6. background: blue;
  7. border-top-left-radius: 50px 25px;
  8. border-top-right-radius: 50px 25px;
  9. border-bottom-left-radius: 50px 25px;
  10. border-bottom-right-radius: 50px 25px;
  11. }
  12. </style>

CSS实现对话框

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

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

样例1:

 
 

CSS”实现对话框效果一

  1. <div class="test1">
  2. <div class="bot">&nbsp;</div>
  3. <div class="top">&nbsp;</div>
  4. CSS实现对话框效果一
  5. </div>
  6. <style>
  7. .test1{width:300px;height: 30px; padding:30px 20px; margin-left:100px; background: #eb7956; position:relative;}
  8. .test1 div{ width:0; height:0; position:absolute;}
  9. .test1 .bot{
  10. border-width:20px;
  11. border-style:solid;
  12. border-color:#ffffff #eb7956 #eb7956 #ffffff;
  13. left:-40px;
  14. top:40px;
  15. }
  16. .test1 .top{
  17. border-width:10px 20px;
  18. border-style:solid;
  19. border-color: transparent #ffffff #ffffff transparent ;
  20. left:-40px;
  21. top:60px;
  22. }
  23. </style>

样例2:

 
 

CSS实现对话框效果二

  1. <div class="test2">
  2. <div class="bot"></div>
  3. <div class="top"></div>
  4. CSS实现对话框效果e二
  5. </div>
  6. <style>
  7. .test2{width:300px; padding:30px 20px; border:5px solid #beceeb; position:relative;}
  8. .test2 div{width:0; height:0; font-size:0; overflow:hidden; position:absolute;}
  9. .test2 div.bot{
  10. border-width:20px;
  11. border-style:solid dashed dashed;
  12. border-color:#beceeb transparent transparent;
  13. left:80px;
  14. bottom:-40px;
  15. }
  16. .test2 div.top{
  17. border-width:20px;
  18. border-style:solid dashed dashed;
  19. border-color:#ffffff transparent transparent;
  20. left:80px;
  21. bottom:-33px;
  22. }
  23. </style>

样例3

  1. <div class="test3">
  2. <div class="bot">&nbsp;</div>
  3. <div class="top">&nbsp;</div>
  4. CSS实现对话框效果三
  5. </div>
  6. <style>
  7. .test3{
  8. width:300px;
  9. height: 30px;
  10. border-radius: 160px/45px;
  11. padding:30px 20px;
  12. margin-left:100px;
  13. background: #eb7956;
  14. position:relative;
  15. }
  16. .test3 div{ width:0; height:0; position:absolute;}
  17. .test3 .bot{
  18. border-width:20px;
  19. border-style:solid;
  20. border-color:transparent #eb7956 #eb7956 transparent;
  21. left:-30px;
  22. top:40px;
  23. }
  24. .test3 .top{
  25. border-width:10px 20px;
  26. border-style:solid;
  27. border-color: transparent #ffffff #ffffff transparent ;
  28. left:-30px;
  29. top:60px;
  30. }
  31. </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实现正方形

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

方法二:使用css3单位vw

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

  1. <div class="vw"></div>
  2. <style>
  3. .vw {
  4. width: 50%;
  5. height: 50vw;
  6. background: pink;
  7. }
  8. </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+支持)

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

  1. 用 CSS 实现三角形与平行四边形

    最近在逛某个技术网站的时候,感觉文章关键词上的样式好酷炫啊.于是我将那种写法照搬到了我的博客中,也许最近逛过我博客的小伙伴已经发现了它出现在哪儿了——分页的样式.来张截图: 你在首页的底部也可以看到这 ...

  2. web前端教程:用 CSS 实现三角形与平行四边形

    最近在逛某个技术网站的时候,感觉文章关键词上的样式好酷炫啊,分页的样式.来张截图: 你在首页的底部也可以看到这样一个分页栏:是不是看上去还不错?下面就来看看这是如何实现的吧~ 第一种方法:利用bord ...

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

    各种demo: 1.css实现正方形 思路:width为0:height为0:使用boder-width为正方形的边长的一半,不占任何字节:border-style为固体:border-color为正 ...

  4. 前端(各种demo)一:css实现三角形,css实现梯形,pop弹层,css伪类before,after使用,svg使用(持续更新中)

    各种demo: 1.css实现正方形 思路:width为0:height为0:使用boder-width为正方形的边长的一半,不占任何字节:border-style为固体:border-color为正 ...

  5. css图形——三角形

    1.css图形简介 在浏览网页的时候,我们经常看见各种图形的效果,而但凡涉及到图形效果,我们第一个想到的就是用图片来实现.但是在前端开发中,为了网站的性能速度,我们都是秉承着少用图片的原生质. 因为图 ...

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

    看到像上图这样的 tip 的小三角,你会怎么办? 切个图上去?恩,不错,简单,兼容性也一级棒,不但好控制,那点小东西也增加不了多少图片的大小.但有没有更好更讲究技巧的办法呢?哈哈,那必须有啊,而且还不 ...

  7. CSS画三角形引发的一些思考

      今天刷知乎时看到了一个问题,有谁能详细讲一下css如何画出一个三角形?怎么想都想不懂? - 知乎.很巧,刚入前端坑的我前不久也遇到过这个问题,今天再来谈一谈这个问题则是因为知乎的一些答案引发了我的 ...

  8. CSS制作三角形和按钮

    CSS制作三角形和按钮 用上一篇博文中关于边框样式的知识点,能制作出三角形和按钮. 我先说如何制作三角形吧,相信大家在平时逛网站的时候都会看到一些导航栏中的三角形吧,比如说: 网易首页的头部菜单栏中, ...

  9. CSS 魔法系列:纯 CSS 绘制三角形(各种角度)

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

随机推荐

  1. nginx ipv4 ipv6 chrome /firefox remote-address/chrome://net-internals/dns

    nginx ---access log server {listen 80;listen [::]:80;server_name localhost;location / {proxy_http_ve ...

  2. LoadRunner-关联问题(栏目列表较多关联不了想要的id)

    新建了课程后之后有很多栏目,每个栏目对应一个partid,但我只想要期中一个. http://*********/course/work/workInfo.action?hwid=1547&c ...

  3. bzoj4129 Haruna’s Breakfast 莫队

    这个思想不难理解了前面几个就能懂 但是代码比较复杂,大概会和之前几次碰到难题的时候一样,一步步思考下去,然后把难点分成好几个板块讲下qwq 首先读入这颗树,预处理下lca,然后就分块,这个时候就会碰到 ...

  4. 洛谷P1967 货车运输 [noip2013] 图论

    正解:kruskal+LCA 解题报告: 哇真实心痛了...明明都没多少时间了我居然耗了一个上午+一个中午在上面?哭死辽我QAQ果然菜是原罪QAQ 然后这题,我先港下60pts做法趴?话说其实我觉得我 ...

  5. 洛谷P1941 飞扬的小鸟 [noip2014] 背包

    正解:背包 解题报告: 话说好久没做背包的题了,都有些陌生了?这几天加强基础题目多刷点儿dp和背包趴qwq 其实这题是95...然后我下了我错的那个测试点,我答案是9874正解是9875...然后读入 ...

  6. PyQt5标准对话框

    很全的Qt的标准对话框,包含QInputDialog.QColorDialog.QFontDialog.QMessageBox.QOpenFileDialog... 全部是由官网的C++版本,转换成P ...

  7. dedecms用keyword标签调用含有某一关键词的文章

    前面我们探讨了调用{dede:likewords}为dedecms添加相关搜索词,如果要调用含有某一关键词的文章可以实现吗?比如ytkah的网站有很多文章中含有“微信”的词,那么想在网站首页.频道页. ...

  8. JS中自定义replace可替换特殊符号$等,但无法忽略大小写的函数

    //可替换特殊符号$等,但无法忽略大小写的函数 String.prototype.replaceStr = function (s1, s2) { this.str = this; if (s1.le ...

  9. 使用Fiddler远程抓包

    Fiddler简介以及web抓包 一.Fiddler简介 简单来说,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯.网上简介很多,我们不多说. 二 ...

  10. Lifyray笑傲江湖之API总结TextUtil

    package liferay; /** * */ import java.text.DecimalFormat; import java.text.NumberFormat; import java ...