css实现基础几何图形

  我们知道,css3通过border-radius、animation、transform等“新”特性可以绘制很多精致的图形。比如腾讯企鹅Logo、超能陆战队中的大白机器人、太阳系、小黄人、叮当猫、安卓机器人、苹果图标等等。

  这些图形看似实现起来挺复杂,但它们通常都是由矩形、圆形、椭圆、三角、梯形等基本图形组合而成的。所以我们先从基本图形入手,等熟悉之后,实现复杂图形就成为可能了。

  首先从矩形开始,一个具有宽高属性的元素,设置其宽高值、块状显示,即得到一个矩形。

  在矩形的基础上通过设置border-radius,可以得到圆角矩形、圆形(当矩形为正方形且四个角的border-radius设为正方形宽度的一半时)和椭圆(当矩形的四个角的border-radius设为50%时)。

  下面实现三角形。我们看border属性,当有相邻border时,相邻border相接的部分是矩形的直角,为了形成一个直角,相邻border各贡献一个直角三角形,组成了矩形的直角,而这个直角三角形的直角边边长就是border的宽度。所以我们只要将其中一个border颜色设为transparent或当前背景色,视觉效果就是一个三角形了。见代码:

  

#div_RightAngle1{ //直角三角形1
    width:0;
    height:0;
    border-width:30px;
    border-style:solid;
    border-top-color:#abc;
    border-right-color:#abc;
    border-bottom-color:#fff;
    border-left-color:#fff;
}
#div_RightAngle2{ //直角三角形2
    width:0;
    height:0;
    border-width:30px;
    border-style:solid;
    border-color:#fff;
    border-top-color:#abc;
}
#div_anyAngle{ //任意三角形
    width:0;
    height:0;
    border-left:25px solid #fff;
    border-right:25px solid #fff;
    border-bottom: 50px solid #abc;

}

下面我们结合border与transform实现一个有趣的弯曲箭头,效果图是这样的:。先构造一个直角三角形div,通过transform旋转一定角度,然后使用after伪类通过圆角制造一个弯曲效果。见代码:

#divArrow{ //弯曲箭头
    position: relative;
    width:0;
    height:0;
    border-top:9px solid transparent;
    border-right:9px solid red;
    transform:rotate(10deg);
}
#divArrow:after{
    position:absolute;
    content:"";
    border-top:3px solid red;
    border-radius:15px 0 0 0;
    top:-12px;
    left:-9px;
    width:12px;
    height:12px;
    transform:rotate(45deg);
}

接下来实现梯形。前面我们已经知道通过设置宽高均为0、三边有边框且其中一边有可见色的方式可以构建出一个直角三角形,那么我们让元素具有宽度,就可以把相邻的边框给撑开,这样元素内部就形成一个矩形了,如此,梯形就构建出来了,见代码:

#div_Trapezoid{
    width:25px;
    height:0;
    border-bottom:50px solid #abc;
    border-left:50px solid #fff;
    border-right:50px solid #fff;
}

实现弯曲箭头的时候我们用到了transform,通过它我们也可以实现平行四边形,见代码:

#div_Parallelogram{
    width:200px;
    height:100px;
    transform:skew(30deg);
}

正方形通过旋转45度可以实现菱形,同样,我们也可以用实现三角形的思想来实现(用两个直角三角形拼起来):

#diamond1{
    width:20px;
    height:20px;
    transform:rotate(45deg);
}
#diamond2{
    width:0;
    height:0;
    border: 25px solid #fff;
    border-bottom-color:#abc;
    position:relative;
}
#diamond2:after{
    position: absolute;
    content:"";
    left:-25px;
    top:25px;
    width:0;
    height:0;
    border: 25px solid #fff;
    border-top-color:#abc;

}

接下来,我们对菱形进行变形,实现一个盾牌效果:

#diamond_Shield{
    width:0;
    height:0;
    border:50px solid #fff;
    border-bottom: 20px solid #abc;
    position:relative;
}
#diamond_Shield:after{
    position: absolute;
    content:"";
    top:20px;
    left:-50px;
    width:0;
    height:0;
    border:50px solid #fff;
    border-top: 70px solid #abc;
}

接下来在菱形和梯形的基础上实现钻石形状:

#diamond3{
    width:50px;
    height:0;
    position: relative;
    border-style: solid;
    border-color:#fff #fff #abc #fff;
    border-width: 0 25px 25px 25px;
}
#diamond3:after{
    position: absolute;
    content:"";
    top:25px;
    left:-25px;
    width:0;
    height:0;
    border-style: solid;
    border-color: #abc #fff #fff #fff;
    border-width: 70px 50px 0 50px;
}

实现一个小房子:

#house{
    background-color: #abc;
    height:55px;
    width:100px;
    position:relative;
}
#house:before{
    content:"";
    position:absolute;
    height:0;
    width:0;
    left:0;
    top:-35px;
    border-bottom: 35px solid #abc;
    border-left: 50px solid #fff;
    border-right: 50px solid #fff;
}

在三角形的基础上,我们让其中一边成弧形,就形成一个扇形了:

#cone{
    background-color: #fff;
    width:0;
    height:0;
    border-left: 70px solid transparent;
    border-right: 70px solid transparent;
    border-top: 100px solid #abc;
    border-radius:50%;
}

如果我们想要实现一个月牙形呢?因为月牙是由两条弧线组成的,每个弧线可以看成一个圆的一部分弧长,所以我们在圆的基础上让圆有一个阴影就能实现了:

#moon{
    background-color: #fff;
    width:80px;
    height:80px;
    border-radius:50%;
    box-shadow: 15px 15px 0 0 #abc;
}

三角形和梯形可以拼成一个五边形,下面我们来实现之:

#pentagon{
    background-color: #fff;
    position: relative;
    width:54px;
    border-width: 50px 18px 0;
    border-style:soild;
    border-color: #abc transparent;
}
#pentagon:after{
    content:"";
    position:absolute;
    height:0;
    width:0;
    top: -85px;
    left:-18px;
    border-width: 0 45px 35px;
    border-style: solid;
    border-color: transparent transparent #abc;
}

六边形可以用两个三角形和一个矩形拼成、八边形可以用两个梯形和一个矩形拼成,还有五角星可以用两个梯形加一个三角形通过旋转组合实现,这里就不演示了。

明天是七夕,最后我们实现一个心形吧,愿天下有情人终成眷属:

#heart{
    width:0;
    height:0;
    position:relative;
}
#heart:before,#heart:after{
    position: absolute;
    content:"";
    left:50px;
    top:0;
    width: 50px;
    height:80px;
    background: red;
    border-radius: 50px 50px 0 0;
    transform: rotate(-45deg);
    transform-origin: 0 100%;
}
#heart:after{
    left:0;
    transform:rotate(45deg);
    transform-origin:100% 100%;
}

(因为只是演示,所以以上样式均没加浏览器厂商前缀)

通过这些基本图形的实现,以后实现复杂图形就有一定的可能性了。

时间: 2024-10-11 08:28:03

css实现基础几何图形的相关文章

CSS的基础

今天学习了CSS的基础 学习到了三种引入方式,还有选择器的分类 引入方式,外联1:在/<head>中/<link rel="style sheet nyet"=<CSs文件路径> 内联2:在/<nead>中/<style>所需要的样式 内嵌3:在标签内部<p/ style="所需要的样式></p>

2天驾驭DIV+CSS (基础篇)(转)

这是去年看到的一片文章,感觉在我的学习中,有不少的影响.于是把它分享给想很快了解css的兄弟们. 基础篇[知识一] “DIV+CSS” 的叫法是不准确的[知识二] “DIV+CSS” 将你引入两大误区[知识三] 什么是W3C标准?[基础一] CSS如何控制页面[基础二] CSS选择器[基础三] CSS选择器命名及常用命名[基础四] 盒子模型[基础五] 块状元素和内联元素 实战篇[第一课] 实战小热身[第二课] 浮动[第三课] 清除浮动[第四课] 导航条(上) | 导航条(下)[大练习] 前四节课

HTML——CSS的基础语法1

页面中所有CSS代码,需要写入到<style></style>标签中. style标签的type属性应该选择text/css,但是type属性可以省略. 1.CSS常用选择器 CSS修改页面中的所有标签,必须借助选择器选中.选择器中可以写多对CSS属性,用{}包裹:每个属性名与属性值之间用:分隔,多对属性之间,必须用;分隔 选择器{ 属性1:属性值1; 属性2:属性值2; } 1-1.标签选择器 写法:HTML标签名{}作用:可以选中页面中,所有与选择器同名的HTML标签. li{

【笔记-前端】div+css排版基础,以及错误记录

现在的网站对于前端的排版已经逐渐不使用<table>,而是使用div+css. 使用这种方法的最大好处就在于在维护页面时,可以只维护css而不去改动html. 可是这种方式对于初学者来说可能不好理解,所以简单描述一下使用div+css排版基础. 下图是一个使用div+css排版的示例: html和css: <html> <head> <style> body{font-size:20px;font-weight:bold;color:white;} .bac

学起来 —— CSS 入门基础

Hello,大家好! 小女来更博啦!CSS福利送上~~~ 首先给大家介绍一下CSS到底是什么? 一.CSS概念 W3C规范中,要求有三条:一 为"两个分离",二 为语言遵循语义化,三 为代码书写规范性.其中要求的第一条"两个分离"指的是内容与表现分离以及内容与行为分离,而其中的"表现"指的就是CSS.CSS全称Cascading Style Sheets,中文名为层叠样式表,是一种用来表现HTML等文件样式的计算机语言,可以给HTML带来更多更精

CSS布局基础

CSS布局基础 1.块区域介绍 1: <body> 2: <div> 3: <p>This is a pargraph.</p> 4: </div> 5: </body> p 元素的包含块是 div 元素,因为作为块级元素,表单元格或行内元素,这是最近的祖先元素,类似的,div的包含块是 body. 因此,p的布局依赖于 div的布局,而div的布局则依赖于 body的布局. 块级元素会自动重启一行. 2. 块级元素 正常流布局 一般

第二部分----CSS的基础语法

PART-1 CSS的基础常识 一.什么是CSS? W3C标准中,倡导有3:其一为内容与表现分离,其二为内容与行为分离,其三为内容结构的语义化.其倡导中第一条的"表现"指的便可以说是CSS.CSS全称Cascading Style Sheets,中文名为层叠样式表,是一种用来表现HTML等文件样式的计算机语言.  二.CSS应用的三种方式: 1. 行内样式表 行内样式表将CSS样式与HTML代码完全杂糅在一起,不符合W3C关于内容与表现分离的的基本规则,且不利于网站的维护.但是行内样式

如何利用CSS实现各种几何图形形状效果

如何利用CSS实现各种几何图形形状效果:建议:尽可能的手写代码,可以有效的提高学习效率和深度.大家都知道CSS具有强大的功能,能够让页面变得美观靓丽,随着CSS的版本的提高,功能也越来越强大,下面简单介绍一下如何使用CSS实现各种几何图形效果.一.实现正方形: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" con

css实现简单几何图形

css实现简单几何图形 前言:你知道吗?用代码就可以做出三角形.圆形.扇形等等这些几何图形呦.快过来一探究竟吧! 页面上一些简单的图形,如三角形.圆形等等,除了用图片来实现,我们还可以用css的border属性来实现,不仅减少了内存占用,对图形的操作也更灵活. 接下来我们就一步一步的来说一下怎么实现这些几何图形. 本文列举了一些常见的几何图形,更多几何图形请到github下载. 项目github地址:https://github.com/ichengll/C-heart 话不多说,这就开始吧.