CSS3:优雅地绘制不规则ICON
早上在w3ctech上看到 中国第二届CSS Conf总结 的时候,真是开心极了;
自从去年在慕课网上看了第一届CSS conf 视频之后,整个人都震惊了,原来还有大会是专门用来讨论CSS的,而且分享的CSS知识真是让人眼界大开;
我在博客园写的第一篇博文《布局神器:Flexbox》便是受到第一届CSS Conf的启发;
所以,算是结下了不解之缘;如今看到第二届分享的视频和PPT时,虽然才看到 《重拾 css 的乐趣(上)》 这一部分内容,但却很受启发
今天文章的主题是用css3实现下面这个分享图标:
因为之前用css3多次处理过类似场景:
所以,外框部分很快就顺利实现:
实现代码
<!--分享icon-->
<div class="icon">
<i class="short top-short"></i>
<i class="short right-short"></i>
<i class="icon-triangle"></i>
<i class="irregular"></i>
</div>
/**
*@ css3 分享按钮icon
*@ author:kevin
*@ 2015/8/15
*/
.icon
{
position: relative;
width: 180px;
height: 180px;
margin: 300px auto;
border-bottom: 20px solid #333;
border-left: 20px solid #333;
}
.short
{
position: absolute;
width: 50px;
height: 20px;
background-color: #333;
}
.top-short
{
top: 0;
left: 0;
}
.right-short
{
right: -15px;
bottom: 0;
transform: rotate(90deg);
}
.top-short:after
{
position: absolute;
right: -20px;
display: block;
content: '';
border-width: 0 0 20px 20px;
border-style: solid;
border-color: transparent transparent transparent #333;
} .right-short:after
{
position: absolute;
left: -20px;
display: block;
content: '';
border-width: 20px 0 0 20px;
border-style: solid;
border-color: #333 transparent transparent transparent;
}
但在实现不规则的"鹰嘴"时,便无从下手,因为之前从来用CSS处理过类似不规则图形;
在《重拾 css 的乐趣(上)》中,作者清晰地给出了实现“鹰嘴”的思路:
这里有一个块元素,设置了边框和圆角,它的两条边框会通过一段圆弧连接起来:
首先,第一个真相,边框圆角可以指定两个半径值(下图中的
r1
和r2
):
如果这两个半径值相等,则连接两条边框的圆弧就是一条相标准的 1/4 圆弧。如果不相等(比如我们把
r2
减小),会得到这样的效果:
我们发现连接两条边框的圆弧会变成一道 1/4 椭圆弧。这个真相解决了我们在尺度上的问题。接下来,我们需要解决形状上的问题。
第二个真相,不同方向上的边框的厚度(下图中的
w1
和w4
)也是可以不一样的:
如果我们逐渐减小
w4
的值至零,我们会得到这个形状:
以上内容引用自:https://github.com/cssmagic/blog/issues/52
作者:cssmagic
自己动手实践,一开始犯了一些错误,不过这些错误导致的结果却很有趣:
比如这个:
.irregular {
width: 100px;
height: 60px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
transform: rotate(-15deg);
background-color: #333;
border-radius: 62px 0px;
}
最终效果:
.irregular
{
position: absolute;
top: 22%;
right: 0;
bottom: 0;
left: 0;
display: inline-block;
width: 120px;
margin: auto;
border-top: 40px solid #333;
border-left: 0 solid #333;
border-radius: 100px 0;
}
.irregular:after
{
position: absolute;
top: -70px;
right: -40px;
display: block;
content: '';
border-width: 50px 0 50px 50px;
border-style: solid;
border-color: transparent transparent transparent #333;
}
引用 cssmagic 的一段话作为本文的结束:
其实,最近这几年,在 CSS 领域出现了很多好东西:
当我听说它们、了解它们、使用它们的时候,我的心情是这样的——
右边的这个小男孩就是我。我的心情是激动、新奇、兴奋。
CSS3:优雅地绘制不规则ICON的更多相关文章
- css3之图形绘制
由于近期的项目中出现了不规则的边框和图形, 所以重新温习一下CSS3的图形绘制...样式绘制的图形比图片的性能要好,体验更佳,关键一点是更加有趣! 以下几个例子主要是运用了css3中border.bo ...
- Canvas绘制不规则图形,实现可拖动,编辑--V1.0第一篇
目前的工作在做在线的标注工具,接触canvas一年了,各种绘制,基本上图像的交互canvas都可以完成,也写了几篇关于canvas的文章,遇到的问题也写博客上了,对于canvas有问题的朋友可以去看看 ...
- css3创建多边形clip属性,可用来绘制不规则图形了
.path1 { clip-path: polygon(5px 10px, 16px 3px, 16px 17px); } .path2 { clip-path: polygon(3px 5px, 1 ...
- CSS3绘制不规则图形,代码收集
三角形系列(三角形.倒三角.左三角.右三角.左上三角.右上三角.左下三角.右下三角) 主要用到的是:宽度高度设置为0, border的各个边的设置(各个边的透明或不透明): .triangle-up ...
- CSS3属性border-radius绘制多种多样的图形
border-radius,国内翻译成圆角,你可能以为这个属性就是用来画圆角,没错,但是除此之外,它还可以做点别的事情.radius其实指的是边框所在圆的半径,这个CSS3属性不仅能够创建圆角,还可以 ...
- WPF 如何绘制不规则按钮,并且有效点击范围也是不规则的
最近在做一个东西,如地图,点击地图上的某一区域,这一区域需要填充成其他颜色.区域是不规则的,而且点击该区域的任一点,都能够变色.普通的按钮只是简单的加载一幅图肯定是不行的.查了很多资料,终于把它搞定了 ...
- CSS3新特性,绘制常见图形
前言:最近准备做一个自己的网页,设计稿中导航我准备设计成矩形,也有hover样式展示的矩形,当中一些头像等等.以前除了画圆,好像真没认真画过其他图形,今天就画画我们常见到的几个图形. 在此之前我们有必 ...
- 【CSS3动画实战】Mailman Icon
周末闲来无事,就想着做点东西练练手.又苦于自己 PS 水平太差,设计不出什么好看的东西. 干脆就在 Dribbble 上逛一逛,看看有什么看起来比较屌的,实际上却很简单的东西. 一共做了 3 个,均已 ...
- css3.0+html绘制六边形
<section class="ass_desc"> <section class="ass_descLeft posRe"> < ...
随机推荐
- python集合set,frozenset--笔记
<Python3程序开发指南>笔记. python提供了2种内置的集合类型:可变的set类型.固定的frozenset类型. 只有可哈希运算的对象可添加到集合中.可哈希的数据类型:floa ...
- Windows离线安装.NET3.X
Windows离线安装.NET3.X 当我们在Windows上安装软件的时候,总是会提示需要安装.NET3.X.而大多数人们选择在线安装,这样会很慢,不少人想到了离线安装的方式.其是只要你的电脑是Wi ...
- 你真的了解 console 吗
对于前端开发者来说,在开发过程中需要监控某些表达式或变量的值的时候,用 debugger 会显得过于笨重,取而代之则是会将值输出到控制台上方便调试.最常用的语句就是console.log(expres ...
- 腾讯云升级到PHP7
1.删除之前安装的PHP yum remove php* php-common 2.安装yum源 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel ...
- Examples_06_02(android)DDMS的data文件中没有显示文件。
以前这里不显示music.cfg.通过Reset adb,就显示了. 查看虚拟机运行时里面的文件,进入adb.exe目录: E:\TDDOWNLOAD\adt-bundle-windows-x86-2 ...
- 汇编笔记之 ret 、retf和call
作用: ret 将 栈顶数据出栈到IP retf 将 栈顶数据出栈到IP ,然后再次将栈顶数据出栈到CS 这样一来,可以使程序跳转到已经定义好了的代码段去执行. call 语法 call s0 (如 ...
- UITableView出现卡顿如何处理
tableView的beginUpdate和endUpdate要比reloadData和reloadRowsAtIndexPaths好,因为beginUpdate和endUpdate会执行一个动画bl ...
- cocos2dx之触摸事件
要使精灵能够接收到触摸事件,无非要做三件事. 注册触摸事件; 接收触摸事件; 处理触摸事件. 下面就从这三点出发,来了解一下精灵如何响应触摸事件. 1.注册触摸事件 精灵类Poker继承Sprite和 ...
- 将Activity设置成半透明的对话框
将Activity设置成半透明的对话框 在定义Activity时指定Theme.Dialog主题就可以将Activity设置成对话框风格.通过修饰Theme.Dialog主题的android:wind ...
- 基于jQuery编写的页面跳转简单的小插件
其实这个很简单,就是一个脚本函数和两个参数(url,jupetime), 开始实现步骤: 1.像页面引用一个jquery工具包 2.在javascript脚本编写自定义方法: 方法声明: $.exte ...