以下几个例子主要是运用了css3中border、bordr-radius、transform、伪元素等属性来完成的,我们先了解下它们的基本原理。

border:简单的来说border语法主要包含(border-width、border-style、border-color)三个属性。

    • „ border-top(上边框):border-width border-style border-color
    • „ border-right(右边框):border-width border-style border-color
    • „ border-bottom(下边框):border-width border-style border-color
    • „ border-left(左边框):border-width border-style border-color

border-radius:border-radius 的语法比我们想像中灵活得多。你可能会惊讶地发现 border-radius 原来是一个简写属性。它所对应的各个展开式属性:

    • „ border-top-left-radius(左上圆角半径)
    • „ border-top-right-radius (右上圆角半径)
    • „ border-bottom-right-radius (右下圆角半径)
    • „ border-bottom-left-radius(左下圆角半径)

     border-image:共有三个属性,分别是图片(border-image-source)、剪裁位置(border-image-slice)、重复性(border-image-repeat)。

图片:使用URL调用

剪裁位置:共有1~4个参数,没有单位(默认是像素),也可以用百分比

    • 第一个参数a:距离上边相应长度进行裁剪
    • 第二个参数b:距离右边相应长度进行裁剪
    • 第三个参数c:距离下边相应长度进行裁剪
    • 第四个参数d:距离左边相应长度进行裁剪

重复性:有三个参数 stretch(默认值),round,repeat

    • 默认值是stretch,拉伸的意思,可以看到上面的效果图中,“2”是垂直拉伸的,“>”是水平拉伸的,而中间的格子是水平垂直一起拉伸的。
    • round是平铺
    • repeat是重复

话不多说,来直接看下效果:

1、三角形系列(三角形、倒三角、左三角、右三角、左上三角、右上三角、左下三角、右下三角)

主要用到的是:宽度高度设置为0, border的各个边的设置(各个边的透明或不透明);

  1. .triangle-up {
  2. /* 三角形 */
  3. width: 0;
  4. height: 0;
  5. border-left: 50px solid transparent;
  6. border-right: 50px solid transparent;
  7. border-bottom: 100px solid #f00;
  8. }
  9. .triangle-down {
  10. /* 倒三角 */
  11. width: 0;
  12. height: 0;
  13. border-left: 50px solid transparent;
  14. border-right: 50px solid transparent;
  15. border-top: 100px solid #f00;
  16. }
  17. .triangle-left {
  18. /* 左三角 */
  19. width: 0;
  20. height: 0;
  21. border-top: 50px solid transparent;
  22. border-bottom: 50px solid transparent;
  23. border-right: 100px solid #f00;
  24. }
  25. .triangle-right {
  26. /* 右三角 */
  27. width: 0;
  28. height: 0;
  29. border-top: 50px solid transparent;
  30. border-bottom: 50px solid transparent;
  31. border-left: 100px solid #f00;
  32. }
  33. .triangle-topleft {
  34. /* 左上三角 */
  35. width: 0;
  36. height: 0;
  37. border-right: 100px solid transparent;
  38. border-top: 100px solid #f00;
  39. }
  40. .triangle-topright {
  41. /* 右上三角 */
  42. width: 0;
  43. height: 0;
  44. border-left: 100px solid transparent;
  45. border-top: 100px solid #f00;
  46. }
  47. .triangle-downleft {
  48. /* 左下三角 */
  49. width: 0;
  50. height: 0;
  51. border-right: 100px solid transparent;
  52. border-bottom: 100px solid #f00;
  53. }
  54. .triangle-downright {
  55. /* 右下三角 */
  56. width: 0;
  57. height: 0;
  58. border-left: 100px solid transparent;
  59. border-bottom: 100px solid #f00;
  60. }

 2、梯形(三角形的变体,设置左右两条边相等,并且给它设置一个宽度)

  1. .Trapezium {
  2. height: 0;
  3. width: 100px;
  4. border-bottom: 100px solid #dc2500;
  5. border-left: 50px solid transparent;
  6. border-right: 50px solid transparent;
  7. }

3、爱心(心形的制作是非常复杂的,可以使用伪元素来制作,分别将伪元素旋转不同的角度,并修改transform-origin属性来元素的旋转中心点)

  1. .love {
  2. /* 爱心 */
  3. position: relative;
  4. }
  5. .love:before {
  6. content: "";
  7. width: 70px;
  8. height: 110px;
  9. background: #f00;
  10. position: absolute;
  11. border-top-left-radius: 50%;
  12. border-top-right-radius: 50%;
  13. transform: rotate(45deg);
  14. }
  15. .love:after {
  16. content: "";
  17. width: 70px;
  18. height: 110px;
  19. background: #f00;
  20. position: absolute;
  21. border-top-left-radius: 50%;
  22. border-top-right-radius: 50%;
  23. transform: rotate(-45deg);
  24. left: -30px;
  25. }

 4、 食人豆(吃豆人的制作方法是先在一个圆形里面制作一个透明的三角形)

  1. .pacman {
  2. /* 食人豆 */
  3. width: 0;
  4. height: 0;
  5. border: 60px solid #f00;
  6. border-right: 60px solid transparent;
  7. border-radius: 100%;
  8. }

5、对话框(消息提示框可以先制作一个圆角矩形,然后在需要的地方放置一个三角形)

  1. .alertDialog {
  2. /* 对话框:一个圆角矩形和一个小三角形 */
  3. width: 150px;
  4. height: 100px;
  5. background: #f00;
  6. border-radius: 10px;
  7. position: relative;
  8. }
  9. .alertDialog:before {
  10. content: "";
  11. width: 0;
  12. height: 0;
  13. position: absolute;
  14. left: -20px;
  15. top: 40px;
  16. border-top: 10px solid transparent;
  17. border-bottom: 10px solid transparent;
  18. border-right: 20px solid #f00;
  19. }

  6、钻石(首先画一个直角梯形,再通过伪类元素在其下方画一个三角形)

  1. .diamond {
  2. /* 钻石:梯形和三角形组成 */
  3. width: 50px;
  4. height: 0;
  5. position: relative;
  6. border-bottom: 25px solid #f00;
  7. border-left: 25px solid transparent;
  8. border-right: 25px solid transparent;
  9. }
  10. .diamond:before {
  11. content: "";
  12. width: 0;
  13. height: 0;
  14. position: absolute;
  15. border-left: 50px solid transparent;
  16. border-right: 50px solid transparent;
  17. border-top: 70px solid #f00;
  18. left: -25px;
  19. top: 25px;
  20. }

  7、五角星(星形的实现方式比较复杂,主要是使用transform属性来旋转不同的边)

  1. .starFive {
  2. /* 五角星: */
  3. width: 0;
  4. height: 0;
  5. position: relative;
  6. border-left: 80px solid transparent;
  7. border-right: 80px solid transparent;
  8. border-bottom: 60px solid #f00;
  9. transform: rotate(35deg);
  10. }
  11. .starFive:before {
  12. content: "";
  13. position: absolute;
  14. width: 0;
  15. height: 0;
  16. border-left: 80px solid transparent;
  17. border-right: 80px solid transparent;
  18. border-bottom: 60px solid #f00;
  19. transform: rotate(-70deg);
  20. top: 3px;
  21. left: -80px;
  22. }
  23. .starFive:after {
  24. content: "";
  25. position: absolute;
  26. width: 0;
  27. height: 0;
  28. border-bottom: 60px solid #f00;
  29. border-right: 20px solid transparent;
  30. border-left: 20px solid transparent;
  31. transform: rotate(-35deg);
  32. top: -40px;
  33. left: -49px;
  34. }

  8、菜单(结合::before和::after两个伪元素)

  1. .btn-hamburger i {
  2. /* position: relative; */
  3. display: -moz-inline-stack;
  4. display: inline-block;
  5. zoom: 1;
  6. width: 22px;
  7. height: 3px;
  8. color: #fff;
  9. font: bold .24rem/0.4 Helvetica;
  10. text-transform: uppercase;
  11. text-indent: -55px;
  12. background: #fff;
  13. transition: all 0.2s ease-out;
  14. }
  15. .btn-hamburger i::before, .btn-hamburger i::after {
  16. content: '';
  17. width: 22px;
  18. height: 3px;
  19. background: #fff;
  20. position: absolute;
  21. left: 0;
  22. transition: 0.2s;
  23. }
  24. .btn-hamburger i::before {
  25. top: -7px;
  26. }
  27. .btn-hamburger i::after {
  28. bottom: -7px;
  29. }

css3图形绘制的更多相关文章

  1. css3之图形绘制

    由于近期的项目中出现了不规则的边框和图形, 所以重新温习一下CSS3的图形绘制...样式绘制的图形比图片的性能要好,体验更佳,关键一点是更加有趣! 以下几个例子主要是运用了css3中border.bo ...

  2. 推荐12个最好的 JavaScript 图形绘制库

    众多周知,图形和图表要比文本更具表现力和说服力.图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等.可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web  ...

  3. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  4. 13个JavaScript图表(JS图表)图形绘制插件【转】

    现在网络上又有越来越多的免费的(JS 图表)JavaScript图表图形绘制插件.我之前给一家网站做过复杂的图形,我们用的是 highchart.在那段时间,没有很多可供选择的插件.但现在不同了,很容 ...

  5. C#中的GDI+图形绘制方法

    GDI+图形绘制方法 1.首先对于绘制图形,必须的先将命名空间导入:using System.Drawing.Drawing2D; 2.然后在一个事件中写入程序 首先先将Graphics这个对象实例化 ...

  6. cocos2d-x 图形绘制

    转自:http://blog.csdn.net/zhy_cheng/article/details/8480048 图形绘制的话,在cocos2d-x自带的TestCpp里有,包括绘制点,直线,多边形 ...

  7. 图形绘制 Canvas Paint Path 详解

    图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.grap ...

  8. HTML5图形绘制学习(1)-- Canvas 元素简介

    Canvas元素是HTML5中新增的一个专门用来进行图形绘制的元素.和其名称Canvas一样,它就相当于一个画布,我们可以在其上描绘各种图形. 这里所说的绘制图型,不是指我们可以进行可视化的图形绘制, ...

  9. 【D3.V3.js系列教程】--(十五)SVG基本图形绘制

    [D3.V3.js系列教程]--(十五)SVG基本图形绘制 1.path <!DOCTYPE html> <html> <head> <meta charse ...

随机推荐

  1. html设置背景图片并自适应

    <style> html{ height:100%; } body{ padding: 0; margin: 0; background: url(images/2.jpg); backg ...

  2. 多人聊天室(Java)

    第1部分 TCP和UDP TCP:是一种可靠地传输协议,是把消息按一个个小包传递并确认消息接收成功和正确才发送下一个包,速度相对于UDP慢,但是信息准确安全:常用于一般不要求速度和需要准确发送消息的场 ...

  3. jpa @onetomany 级联查询时会有重复数据,去重问题

    自己是直接查出来然后利用set去重(自己感觉不是太好,不过能达到目的) List<CampaignDashboardDimensionDo> list = query.getResultL ...

  4. PHP数组——数组正则表达式、数组、预定义数组

    正则表达式 1.替换 $s = "hello5world"; $s = preg_replace("/\d/","#",$s); echo ...

  5. redis更多

    应用场景 存放频繁操作的数据,以及一些无须保存到数据库的中间值 应用: - 配合django做缓存,常用且不易修改的数据放进来(博客) - 购物车信息 - Session - 缓存配置文件 - ses ...

  6. CIA402状态转换图

    CIA402状态转换如下图所示: 要想改变参数并使其生效,需要先将状态转换到ready,然后修改要配置的参数,再使其运行(operation enabled). 要发送的报文顺序基本如下: 1)   ...

  7. 【easy】202. Happy Number

    happy number Write an algorithm to determine if a number is "happy". A happy number is a n ...

  8. web富文本编辑器收集

    1.UEditor 百度的. 优点:插件多,基本满足各种需求,类似贴吧中的回复界面. 缺点:不再维护,文档极少,使用并不普遍,图片只能上传到本地服务器,如果需要上传到其他服务器需要改动源码,较为难办, ...

  9. 【原创】大叔经验分享(26)hive通过外部表读写elasticsearch数据

    hive通过外部表读写elasticsearch数据,和读写hbase数据差不多,差别是需要下载elasticsearch-hadoop-hive-6.6.2.jar,然后使用其中的EsStorage ...

  10. Python-爬虫-Beautifulsoup解析

    简介 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省 ...