前言

伴随着 CSS3(CSS Module 3)的发布,我们设计网页时有了更多的选择。对于一些比较简单的小图标和图片,我们可以利用 CSS3 很方便的进行绘制,从而减少页面的图片数量和HTTP请求次数,加快网页的访问速度。

今天我们主要利用 CSS3 的几个属性,简单的绘制一个如下图所示的操场:

CSS绘制操场示意图

其中用到的核心属性为:

  • border-radius
  • box-shadow
  • beforeafter伪元素

border-radius

border-radius属性是用来为元素添加圆角边框的。其用法如下:

border-radius: 1-4 length|% / 1-4 length|%;

“/”前面的值表示水平方向的半径,“/”后面的值表示竖直方向的半径。若省略,则水平方向与竖直方向半径相等。下面是其典型应用场景:绘制圆形。

div{   width: 50px;   height: 50px;   border-radius:50%;   border:1px solid;}

绘制效果如下所示:

只要将某元素(块级显示元素)的widthheight值设置成一样,然后利用 border-radius:50%;就可以绘制出一个圆形。

box-shadow

box-shadow属性是用来设置盒阴影的,其用法如下:

box-shadow: h-shadow v-shadow blur spread color inset;
属性值 解释
h-shadow 必需参数。设置水平阴影的位置。允许负值
v-shadow 必需参数。设置垂直阴影的位置。允许负值
blur 可选参数。设置模糊距离
spread 可选参数。设置阴影的大小
color 可选参数。设置阴影的颜色
inset 可选参数。设置是否为内置阴影

box-shadow是一个多值属性列表,可用逗号分隔多个box-shadow属性 ,以实现效果的叠加。

before 和 after 伪元素

::before::after是CSS3中新增的伪元素。所谓伪元素,就是这些元素不会出现在DOM中,不会改变文档内容,不可复制,仅仅是在css渲染层加入。

::before::after必须配合content属性来使用,content用来定义插入的内容,必须显示声明content属性,哪怕是空字符串。

案例实现

HTML结构

<div class="playground">

  <div class="central_area">

    <div class="football_field">      <div class="football_field_left">div>      <div class="football_field_right">div>

      <div class="central_circle">div>    div>  div>div>

HTML 结构较为简单,就不再解析了。

操场容器绘制

首先设定操场区域的宽高

.playground{    width: 800px;    height: 400px;}

跑道绘制

设置操场核心区域,绘制出环形跑道

.central_area{    width: 500px;    height:200px;    /*水平方向居中显示*/    margin: 100px auto;    background:#6F9B3A;    /*关键代码,将操场变换为椭圆形*/    border-radius:200px;    /*关键代码,设置多层环形跑道*/    box-shadow: 0 0 0 10px #E65868,0 0 0 11px #eee,0 0 0 20px #E65868,0 0 0 21px #eee,0 0 0 30px #E65868,0 0 0 31px #eee,0 0 0 40px #E65868;}

该部分代码中的后两行代码是整个案例的最核心代码。通过border-radius将操场区域变换为椭圆,通过box-shadow属性的多层叠加,可以实现多个跑道的绘制。

border-radius属性能改变主体内容的显示,而box-shadow会根据主体内容的形状变化而变换,两者的综合应用,是绘制操场的关键。

环形跑道绘制示意图

足球场区域绘制

.football_field{    width:350px;    height:188px;    border:2px solid #fff;    position: relative;    top: 4px;    left:75px;}

球门区域绘制

足球场左右半边区域绘制(以左边为例)

.football_field_left{    width:175px;    height:188px;    border-right:2px solid #fff;}/*绘制左侧球门*/.football_field_left::before{    content: '';    width: 20px;    height: 60px;    position: absolute;    top:64px;    border:2px solid #fff;    border-left:none;}/*绘制左侧球门框*/.football_field_left::after{    content: '';    width: 50px;    height: 120px;    position: absolute;    top:34px;    border:2px solid #fff;    border-left:none;}

中心圈绘制

绘制足球场中心圈

.central_circle{    width:50px;    height:50px;    border:1px solid #fff;    /*设置为圆形*/    border-radius:50%;    /*居中显示*/    position: absolute;    top: 50%;    left: 50%;    transform: translate(-50%, -50%);}

最终效果

该案例最终效果如下图所示:

关于我

如果觉得本文还不错,希望大家分享、点赞,本公众号前端快爆会定期为您推送最新技术文章,全都是硬菜干货~~

本文到此结束,感谢您的阅读,我们下篇文章见。

关注前端快爆

获取更多精彩

前端快爆

点下"在看",你最好看

css3绘制环形_利用CSS简单地绘制一个操场相关推荐

  1. java 绘制角色_利用scratch绘图编辑器绘制角色和角色的加工

    同学们,前面我们学习了矢量图的绘制编辑工具,那么我们这节课就来学习利用绘制编辑工具绘制角色和修改加工角色. 一.微课视频分享 1.绘制角色 在编辑区有两种模式,位图与矢量图模式,因为矢量图放大后不会模 ...

  2. 利用css transition属性实现一个带动画显隐的微信小程序部件

    我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说明)所以我们这个时候会 ...

  3. 如何使用CSS简单的制作一个视频网站

    如何使用CSS简单的制作一个视频网站 1.主页的设置 <!DOCTYPE html><html lang="en"><head> <met ...

  4. 利用css样式表做一个旋转写轮眼

    利用css样式表做一个旋转写轮眼 成品效果图 首先分析效果图 图中有红色背景圈和里面的三个椭圆和最中心的黑圈组成. 因此,我们应该写一个大的div盒子,来装这三个椭圆div,里面的三个椭圆div和圆的 ...

  5. css画钟表_利用css+原生js制作简单的钟表

    利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期 ...

  6. css3运动后留下轨迹尾巴_利用CSS+JS实现唯美星空轨迹运动效果

    先给大家分享效果图: 给大家分享一个使用CSS+JS实现的唯美星空轨迹运动效果, 这样的效果不输给Flash   .相关代码如下: cloth body { background: #000; } i ...

  7. css3三角形兼容_利用css3特性写出三角形(兼容IE浏览器)

    利用CSS写出三角形的效果 效果如图: 代码如下: .triangle-up { width:0px; height:0px; border-left:10px solid transparent; ...

  8. 如何用lisp画蔓叶线_利用 TI 图形计算器绘制美丽的极坐标曲线

    利用 TI 图形计算器绘制美丽的极坐标曲线 规定有单位长度的射线 Ox,O 为极点,Ox 为极轴,这样就建立了极坐标系. 又把平 面上一点 P 到极点 O 的距离称为极径 ρ,OP 与 Ox 轴的夹角 ...

  9. css表格文字超数量就竖排_利用CSS如何实现文字的竖排

    本篇文章给大家带来的内容是关于利用CSS如何实现文字的竖排,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 样式表的文字处理属性中有两个重要的属性:writing-mode和text- ...

最新文章

  1. RDKit | 基于RDKit探索ChEMBL数据库中合成药物历史
  2. How to go between HK and Shenzhen (Futian)?
  3. s3c2410_gpio_cfgpin函数解析
  4. Android 消息机制详解(Android P)
  5. linux下直接使用base64就可转换图片为二进制
  6. js 格式化日期 (/Date(1400046388387)/)
  7. 【uni-app】uParse 富文本解析插件遇到长图、大图宽高比异常问题
  8. java 传送解析8583报文_java发送ISO8583报文接口案例
  9. 【渝粤教育】国家开放大学2019年春季 2114人体解剖生理学 参考试题
  10. 贪吃蛇的c语言代码怎么弄,刚学C语言,想写一个贪吃蛇的代码
  11. php缓存技术基础知识
  12. HTML5项目实战之旅行社网站——PC端固定布局
  13. 在手机/平板上安装kali系统
  14. 『开发』小程序通过易班接口登陆并请求数据
  15. 智慧物业小程序_物业小程序 物业管理小程序 微信物业小程序
  16. 《互联网时代》第五集 崛起
  17. 用html制作一个影厅位置图,screenx影厅是什么
  18. 自学就能轻松学会搭建网站的步骤教程
  19. 云服务器修改虚拟内存,云服务器可以设置虚拟内存
  20. java需要学哪些知识习

热门文章

  1. HDU1013 POJ1519 Digital Roots
  2. 在阿里云容器服务上创建一个使用Redis的Python应用
  3. 利用百度地图API,在浏览器中找到自己的位置
  4. windows 10无法安装virtualbox的解决方法
  5. Linux双网关配置(电信网通)
  6. 使用Image.GetThumbnailImage 方法返回缩略图
  7. Linux 命令(78)—— rmdir 命令
  8. 学习GRPC(一) 简单实现
  9. MongoDB在单机上搭建分片副本集群(windows)
  10. ViewPager+Fragment实现支持左右滑动的Tab