利用CSS制作图形效果

前言

  关于如何使用CSS来制作图形,比如说圆形,半圆形,三角形等的相关教程还是挺多的,今天我主要想解释一下里面一些demo的实现原理,话不多说,开始吧

 

以下所有内容只使用一个HTML元素。任何类型的CSS,只要它至少在一个浏览器中支持。

一.  实现一个心形

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

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

效果

原理:这个心形主要是由两部分交叠组成

border-radius: 50px 50px 0 0;
/* 等价于 */
border-top-left-radius: 50px;
border-top-right-radius: 50px;

实现如下效果

再利用transfrom变换 得到如下,再进行交叠组成。

tip:合理地利用伪元素以及css border-radius属性以及transform变换属性

 二. 饼图

即使是最简单的只有两种颜色的形式,用Web技术创建也并不简单

尽管这个东西并不像它曾经看起来那么难以实现,但是也没有什么直接并且简单的方法。但是,现在已经有很多更好、更易于维护的方式来实现它

.pie{
  width:50px;
  height:50px;
  position:relative;
  background: linear-gradient(90deg,#eee 50%,green 0);
  border-radius:50%
}

第一步:先画一个圆(饼图特效颜色为 green)

第二步:利用伪元素添加一个蒙版

.pie::before{
  position:absolute;
  content:‘‘;
  width:50%;
  height:100%;
  background: #eee;
/* 当饼图比例大于一半的时候 */
/*  background: green; */
  border-radius:50px 0 0 50px;
}

第三步:利用transform的变换 改变角度,实现自己需要的角度

  transform:rotate(20deg);
  transform-origin:100% 50%;

     

注:伪元素的旋转变换中心应该设置为圆心

结束语

  暂时先说明了两个图形,都是采用CSS或者部分采用了CSS3的属性制作出来的,大家还可以点击CSS3- Tricks 提供的《The Shapes of CSS》里面展示了十多种图形的制作方法。由于部分图形效果使用了CSS3的部分属性,所以在ie的效果可能无法显示。使用css制作三角和圆有效果应用还是很多了,特别是用来制作tips效果

时间: 2024-12-22 03:52:36

利用CSS制作图形效果的相关文章

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

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

利用CSS制作静态网页的注意事项

利用CSS制作静态网页主要是在<head>里面使用外联CSS文件来赋予网页样式 首先用div分区块,了解网页布局,脑子里面有个大概的页面布局 目前学习写的几种的网页布局可以分为以下几种情况: 1.页面中间 centen ,两边留白 :直接测量 centen 内容的宽度和高度,利用 maigin:auto 让内容居中即可: 2.页面顶部 head 满页面内容 ,下面centen 居中 ,两边留白:head 宽度设为100%,中间centen 内容的宽度和高度,利用 maigin:auto 让内容

如何利用CSS实现三角形效果

如何利用CSS实现三角形效果:建议:尽可能的手写代码,可以有效的提高学习效率和深度.有时候我们经常发现有些矩形的某个地方会出现三角形效果,感觉挺神奇的,当然可以使用背景图片实现,这里简单介绍一下不采用背景图片的效果.代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&g

利用CSS制作下拉菜单

利用CSS制作下拉菜单 1.定义一个div,给div一个id或class,给div一个样式. eg:<div id="menu"></div> /*css #menu{ width:1024px; //给div定义一个宽度 height:40px; //给div定义一个高度 margin:0 auto; //让div居中显示 background-color:#eee; //给div一个背景颜色 } */ 2.制作下拉菜单所需的无序列表(ul). eg:<

利用 css 制作简单的提示框

在网页开发中,为了提高用户体验,经常会用到一些提示框来引导用户,这里分享下一些简单的提示框的制作 1.首先类似一个长方形右上角一个关闭按钮 这里用到的主要是一些定位的知识,运用relative和absolute可以快速制作这样的一个提示框,想详细了解,点击这里 html代码: <div id="position"> <div class="position-relative"> <span>提示信息</span> &l

利用CSS制作三角形

在我们看到类似于这样的图片时: 我们一般都会想,哎,这还不简单,用一张图片就可以了. 的确,用图片可以很轻松地做到.不过我们接下来要讨论的是: 如何用css也作出这样的效果. 首先,我们来定义一个div: <div class="up"></div> 然后给它增加一些样式: .up{ width: 50px; height: 50px; background-color: red; font-size: 0px; line-height: 0px; } 结果如图

CSS--使用Animate.css制作动画效果

一 使用Animate.css动画 // 通过@import引入外部CSS资源; // 引入线上图片及JS文件; // 通过更改CSS类名生成不同类型的CSS3动画;   1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 </head> 6 <style> 7 /* Animate.css GitHu

DIV+CSS制作箭头效果

<style> .b_main{position:absolute} .out{ position:absolute; top:7px; border-color:transparent #999999 transparent transparent; border-style:dashed dashed solid dashed; border-width:8px; } .in{ position:absolute; border-color:transparent #ffffff tran

利用css制作横向和纵向时间轴

Html代码: <div class="container"> <p>原文地址:http://www.cnblogs.com/xiaofeixiang/</p> <ul class="time-horizontal"> <li><b></b>成立</li> <li><b></b>合作</li> <li><b