博客已迁移至http://lwzhang.github.io

纯CSS实现一个微信logo并不难,难的是怎样用最少的html标签实现。我一直在想怎样用一个标签就能实现,最后还是没想出来,就只好用两个标签了。

首先需要两个标签元素:

    <div class="bg">
<div class="inner"></div>
</div>

先画个背景:

    .bg {
width: 300px;
height: 300px;
background-color: #08c406;
border-radius: 10px;
position: relative;
}

再画个大的椭圆:

    .inner {
width: 180px;
height: 150px;
border-radius: 50%;
background-color: #fff;
position: absolute;
top: 60px;
left: 35px;
}

小的椭圆利用.inner::before伪元素实现:

    &::before {
content: "";
width: 140px;
height: 120px;
border-radius: 50%;
background-color: #fff;
position: absolute;
top: 60px;
left: 90px;
border: 2px solid #08c406;
}

下图时现在的结果:

里面的四个圆怎么画呢?可以利用CSS3的box-shadow属性实现,一般重复性的东西都会用这个属性,因为它可以制造出无数个一模一样的东西出来。

利用.bg::before伪元素实现这些圆:

    &::before {
content: "";
position: absolute;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: #08c406;
top: 150px;
left: 155px;
z-index: 2;
box-shadow: 70px 0 #08c406, -70px -50px 0 2px #08c406, 0 -50px 0 2px #08c406;
}

::before本身会实现一个圆(一个小圆),然后利用box-shadow属性实现其它的三个圆。

来看看现在的效果:

现在就剩下两个角了,想想还有哪些东西没用上?还有两个伪元素,分别是.bg::after.inner::after,刚好可以实现两个角。

这两个角其实就是平常的小三角,然后再旋转个45度,CSS实现小三角太常见了:

    .bg::after {
content: "";
border-width: 30px 12px;
border-style: solid;
border-color: #fff transparent transparent transparent;
position: absolute;
top: 182px;
left: 50px;
transform: rotate(45deg);
} .inner::after {
content: "";
border-width: 30px 10px;
border-style: solid;
border-color: #fff transparent transparent transparent;
position: absolute;
top: 155px;
left: 200px;
transform: rotate(-45deg);
}

最终效果:

全部css代码:

    @mixin pos($left, $top) {
position: absolute;
left: $left;
top: $top;
} .bg {
width: 300px;
height: 300px;
background-color: #08c406;
border-radius: 10px;
position: relative; &::before {
@include pos(155px, 150px);
content: "";
width: 16px;
height: 16px;
border-radius: 50%;
background-color: #08c406;
z-index: 2;
box-shadow: 70px 0 #08c406, -70px -50px 0 2px #08c406, 0 -50px 0 2px #08c406;
} &::after {
@include pos(50px, 182px);
content: "";
border-width: 30px 12px;
border-style: solid;
border-color: #fff transparent transparent transparent;
transform: rotate(45deg);
} .inner {
width: 180px;
height: 150px;
border-radius: 50%;
background-color: #fff;
@include pos(35px, 60px); &::before {
@include pos(90px, 60px);
content: "";
width: 140px;
height: 120px;
border-radius: 50%;
background-color: #fff;
border: 2px solid #08c406;
} &::after {
@include pos(200px, 155px);
content: "";
border-width: 30px 10px;
border-style: solid;
border-color: #fff transparent transparent transparent;
transform: rotate(-45deg);
}
}
}

画这个logo最难的地方应该就是实现四个小圆的时候,因为CSS3不太熟的人可能不会想到利用box-shadow去实现。

大家还有其它的方法实现微信logo吗?有没有一个标签就能实现的?欢迎留下你的实现方式。

纯CSS实现一个微信logo,需要几个标签?的更多相关文章

  1. 纯 CSS 创建一个三角形

    [要求]:用纯CSS创建一个三角形的原理是什么? ♪ 答: 把上.左.右三条边隐藏掉(颜色设为 transparent) [实现]: #demo { width: 0; height: 0; bord ...

  2. 3.纯 CSS 创作一个容器厚条纹边框特效

    原文地址:3.纯 CSS 创作一个容器厚条纹边框特效 没有啥好点子呀,不爽 HTML代码: <div class="box"> <div class=" ...

  3. 2.纯 CSS 创作一个矩形旋转 loader 特效

    原文地址:2.纯 CSS 创作一个矩形旋转 loader 特效 扩展后地址:https://scrimba.com/c/cNJVWUR  扩展地址:https://codepen.io/pen/ HT ...

  4. 1.纯 CSS 创作一个按钮文字滑动特效 + 弹幕(残缺)

    原文地址:1# 视频演示如何用纯 CSS 创作一个按钮文字滑动特效 扩展后地址:https://scrimba.com/c/cJkzMfd HTML代码: <html> <head& ...

  5. 43.纯 CSS 绘制一个充满动感的 Vue logo

    原文地址:https://segmentfault.com/a/1190000015177284 感想: 又有点回到boder的三角形 HTML code: <div class="v ...

  6. 如何用纯 CSS 绘制一个充满动感的 Vue logo

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/zaqKPx 可交互视频教 ...

  7. 前端每日实战:43# 视频演示如何用纯 CSS 绘制一个充满动感的 Vue logo

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/zaqKPx 可交互视频教程 此视频 ...

  8. 纯 css 打造一个小提示 tooltip

    最后编辑:2019/11/26 前 无意间在寻找资料时候,发现一个不错的小提示,查看源码竟然是纯手工 css 编写(文章底部参考链接). 效果 使用的特性 css2 中的 attr 函数,所以现在(2 ...

  9. 还在为小三角形切图?使用纯CSS写一个简单的三角形

    同学们,当美工给的设计图是这样: 或者这样: 我的内心其实是拒绝的-_-:但工作还得干,大部分同学会写 <style> .icon{width:20px;height:20px;displ ...

随机推荐

  1. Scala系统学习(五):Scala访问修辞符

    本章将介绍Scala访问修饰符.包,类或对象的成员可以使用私有(private)和受保护(protected)的访问修饰符进行标注,如果不使用这两个关键字的其中一个,那么访问将被视为公开(public ...

  2. Hive的安装与配置

    1.因为我使用MySQL做为Hive的元数据库,所以先安装MySQL. 参考:http://www.cnblogs.com/hunttown/p/5452205.html 登录命令:mysql -h主 ...

  3. CentOS.56安装Redis监控工具RedisLive

    RedisLive是一款开源的基于WEB的reids的监控工具,以WEB的形式展现出redis中的key的情况,实例数据等信息! RedisLive在github上的地址:https://github ...

  4. gerrit 使用教程(一)

    原文地址:https://www.jianshu.com/p/b77fd16894b6 1, Gerrit是什么? Gerrit实际上一个Git服务器,它为在其服务器上托管的Git仓库提供一系列权限控 ...

  5. HTML 显示/隐藏DIV的技巧(visibility与display的差别)

    参考链接:http://blog.csdn.net/szwangdf/article/details/1548807 div的visibility可以控制div的显示和隐藏,但是隐藏后页面显示空白: ...

  6. Vue项目图片剪切上传——vue-cropper的使用

    最近自己在研究vue,然后做了一个小型的后台管理系统用来练手,开发过程中,想到了剪切图片上传用户头像的需求.上网百度了一番,发现好多用的都是vue-cropper.我也就用了,个人感觉还是挺好用的.现 ...

  7. memcache分布式布置方案

    利用hash算法 key->hash->取余%2 mod ->server=array()=>server[mod]算出是第几个memcache服务器

  8. Codeforces Round #247 (Div. 2) C D

    这题是一个背包问题 这样的 在一个k子树上 每个节点都有自己的k个孩子 然后 从原点走 走到 某个点的 和为 N 且每条的 长度不小于D 就暂停问这样的 路有多少条,  呵呵 想到了 这样做没有把他敲 ...

  9. linux常用命令:ln 命令

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在 ...

  10. Linux基础命令---sum,cksum

    cksum 检查文件的crc是否正确,统计文件的字节数. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法       cks ...