CSS揭秘(三)形状
Chapter 3
1. 椭圆
椭圆的实现主要依靠 border-radius 属性,该属性确定边框切圆角的半径大小,可以指定数值 px,也可以使用百分比显示
而且该属性非常灵活,四个角可以分别设置
width: 200px;
height:200px; //正方形
--------------------------------------------------------
border-radius:100px; //圆形
border-radius:50%/50%; //水平半径 / 垂直半径
--------------------------------------------------------
border-radius:50px/20px; //椭圆边角
--------------------------------------------------------
border-radius:50%/100% 100% 0 0 //半椭圆,底部垂直圆角为0时水平圆角也自动为0,无需再次指定

2. 平行四边形
平行四边形的实现依靠 transform:skew()实现,可以自己选择倾斜的方向X轴还是Y轴
要解决的问题是:如何在容器倾斜的情况下保持内容不变?
<a href="#yolo" class="button"><div>Click me</div></a>
---------------------------------------------------
.button { transform: skewX(45deg); }
.button > div { transform: skewX(-45deg); } //文字设置反向倾斜以抵消容器带来的倾斜 .button {
display: inline-block;
padding: .5em 1em;
border:; margin: .5em;
background: #58a;
color: white;
text-transform: uppercase;
text-decoration: none;
font: bold 200%/1 sans-serif;
}

.button { //宿主元素
position: relative;
display: inline-block;
padding: .5em 1em;
border:; margin: .5em;
background: transparent;
color: white;
text-transform: uppercase;
text-decoration: none;
font: bold 200%/1 sans-serif;
}
.button::before { //伪元素
content: ''; /* To generate the box */
position: absolute;
top:; right:; bottom:; left:;
z-index: -1;
background: #58a;
transform: skew(45deg);
}
//想要变形元素而不变形内容可以使用
3. 简单的饼图
饼图实现有两种方式:渐变与SVG
渐变结合伪元素实现旋转,要注意超过50%之后要反转伪元素背景色;
通过这种方式还可以做动态旋转动画,用作加载进度的显示
<div class="pie"></div>
--------------------------------------------------------------------------------------------
.pie {
width: 100px; height: 100px;
border-radius: 50%;
background: yellowgreen;
background-image: linear-gradient(to right, transparent 50%, currentColor 0);
color: #655;
}
.pie::before {
content: '';
display: block;
margin-left: 50%;
height: 100%;
border-radius: 0 100% 100% 0 / 50%;
background-color: inherit;
transform-origin: left;
transform:rotate(0.15turn); //设置旋转角度
}


SVG实现是先画圆和描边,然后在描边的下层再画一个更大的圆
虚线描边属性 stroke-dasharray 的第一个参数表示虚线长度,第二个为虚线之间的间隙长度
<svg width="100" height="100">
<circle r="25" cx="50" cy="50"/>
<svg>
------------------------------------------
svg {
transform: rotate(-90deg);
background: yellowgreen;
border-radius: 50%;
} circle {
fill: yellowgreen;
stroke: #655;
stroke-width:; //该宽度为半径的两倍
stroke-dasharray:50 160; //第二个参数为周长
}
CSS揭秘(三)形状的更多相关文章
- [css 揭秘]:CSS揭秘 技巧(三):背景定位
我的github地址:https://github.com/FannieGirl/ifannie 源码都在这上面哦! 喜欢的给我一个星吧 背景定位 问题:很多时候,我们想针对容器某个角对背景图片做便宜 ...
- 03--css形状--css揭秘
形状 一 自适应的椭圆 1.难题 1> 圆 你可能注意到过, 给任何正方形元素设置一个足够大的border-radius, 就可以把它变成一个圆形.所用到的CSS 代码如下所示: #bd { w ...
- CSS揭秘—灵活的背景图(三)
前言: 所有实例均来自<CSS揭秘>,该书以平时遇到的疑难杂症为引,提供解决方法,只能说秒极了,再一次刷新了我对CSS的认知 该书只提供了关键CSS代码,虽然有在线示例代码链接,但访问速度 ...
- css 揭秘-读书笔记
css 揭秘 [希]Lea verou 著 css 魔法 译 该书涵盖7大主题,47个css技巧,是css进阶必备书籍,开阔思路,探寻更优雅的解决方案.这本书完全用css渲染出的html写成的(布局. ...
- CSS揭秘读书笔记 (一)
CSS揭秘读书笔记 (一) 一.半透明边框 要想实现半透明边框可以使用border: border: 10px solid hsla(0,0%,100%,.5); background: ...
- 前端总结·基础篇·CSS(三)补充
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 目录 一.移动端 1.1 视口(viewport) 1.2 媒体查询(medi ...
- [css 揭秘]:CSS揭秘 技巧(四):边框内圆角
我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在这上面哦! 喜欢的给我一个星吧 边框内圆角 问题:有时候我们需要一个容器,只在内侧有圆角,而 ...
- [css 揭秘]:CSS揭秘 技巧(一):半透明边框
我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在上面哦 喜欢的给我一个星吧 半透明边框 css 中的半透明颜色,比如用 rgba() 和 h ...
- 《CSS 揭秘》作者Lea Verou:我喜欢分享开源的行业文化
本文仅用于学习和交流,不用于商业目的.非商业转载请注明作译者.出处,并保留本文的原始链接:http://www.ituring.com.cn/art... 访谈嘉宾: Lea VerouW3C CSS ...
- [css 揭秘]-css coding tips
css 揭秘之css coding tips demo(1) html 代码: <body> <section> <div class="demo1" ...
随机推荐
- JQuery AJAX 全局设置
现在需要给每个请求都加一个请求头,挨个修改太麻烦.可以用如下方式: $.ajaxSettings.beforeSend= function(request) { request.setRequestH ...
- c#多线程同步之EventWaitHandle再次使用
/// <summary> /// 文件传输器,用来获取全文文件,自动根据全文文件数量,开启一定数量的线程,采用生产者消费模式 /// </summary> public cl ...
- java枚举类型举例(基础)
enum Mycolor{红色,绿色,蓝色}; public class asd { public static void main(String[] args) { Mycolor[] allcol ...
- MyBatis笔试题
1请写出Mybatis核心配置文件MyBatis-config.xml的内容? <?xml version="1.0" encoding="UTF-8"? ...
- [转]使用Subversion进行版本控制
使用Subversion进行版本控制 http://www.subversion.org.cn/svnbook/1.4/index.html 针对 Subversion 1.4(根据r2866编译) ...
- Lintcode247 Segment Tree Query II solution 题解
[题目描述] For an array, we can build a Segment Tree for it, each node stores an extra attribute count t ...
- c运行时函数参考学习地址
https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/c-run-time-library-reference http://pubs.open ...
- 关于better-scroll中的问题点
最近在学习vue和better-scroll结合开发音乐APP,看着视频介绍中在制作slidet轮播图的时候,视频中讲解要想实现无缝滚动,则加入snapLoot:true,但是不可以单独引入它,必须将 ...
- WordPress源代码压缩优化及常见问题的解决
先来看看效果: 意思就是让你的源代码看起来都挤在一起,这样如果别人想看你的源代码的话就不容易看懂了,(当然如果别人实在想看的话也可以通过某些软件的整理代码的功能来实现,比如IDEA的Ctrl+alt+ ...
- 【前端单元测试入门03】Sinon
前端测试存在的问题 在讲Sinon之前,我们得先讲一下在学习了Mocha.chai以及enzyme之后,我们的前端测试还存在的一些问题. 比如前台测试需要与后台交互,获取后台数据后再根据相应数据进行测 ...