你想不到的!CSS 实现的各种球体效果【附在线演示】
CSS 可以实现很多你想不到的效果,今天我们来尝试使用 CSS 实现各种球体效果。有两种方法可以实现,第一种是使用大量的元素创建实际的 3D 球体,这种方法有潜在的性能问题;另外一种是使用 CSS3 渐变和阴影特性来实现,实现方法简单,效果精美。
为保证效果,请使用 Chrome、Firefox、Safari 等现代浏览器浏览。
基本形状
我们先来实现一个基本的圆,HTML 代码如下:
- <figure class="circle"></figure>
这里使用的是 HTML5 新增标签 figure,也可以用其它标签。figure 标签专门用于显示网页中的图片或者其它图表内容。为了实现圆型效果,添加一些基础的样式:
- .circle {
- display: block;
- background: black;
- border-radius: 50%;
- height: 300px;
- width: 300px;
- margin: 0;
- }
径向渐变
上面实现了基本的圆形效果,这里增加径向渐变效果来实现更逼真的球体。
CSS 代码如下:
- .circle {
- display: block;
- background: black;
- border-radius: 50%;
- height: 300px;
- width: 300px;
- margin: 0;
- background: -webkit-radial-gradient(100px 100px, circle, #5cabff, #000);
- background: -moz-radial-gradient(100px 100px, circle, #5cabff, #000);
- background: radial-gradient(100px 100px, circle, #5cabff, #000);
- }
效果如下:
阴影和 3D
上节已经有基本的球体效果出来了,为了增加立体效果,我们在球的底部加个阴影,这样立体感就更强了。
这里用到的 HTML 代码如下:
- <section class="stage">
- <figure class="ball"><span class="shadow"></span></figure>
- </section>
CSS 代码如下:
- .stage {
- width: 300px;
- height: 300px;
- display: inline-block;
- margin: 20px;
- -webkit-perspective: 1200px;
- -webkit-perspective-origin: 50% 50%;
- }
- .ball .shadow {
- position: absolute;
- width: 100%;
- height: 100%;
- background: -webkit-radial-gradient(50% 50%, circle, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.1) 40%, rgba(0, 0, 0, 0) 50%);
- -webkit-transform: rotateX(90deg) translateZ(-150px);
- z-index: -1;
- }
这里用到了 CSS3 perspective 特性,效果如下:
多层阴影
为了实现更逼真的球体效果,这里应用了多层阴影:
- .ball {
- display: inline-block;
- width: 100%;
- height: 100%;
- margin: 0;
- border-radius: 50%;
- position: relative;
- background: -webkit-radial-gradient(50% 120%, circle cover, #81e8f6, #76deef 10%, #055194 80%, #062745 100%);
- );
- }
- .ball:before {
- content: "";
- position: absolute;
- top: 1%;
- left: 5%;
- width: 90%;
- height: 90%;
- border-radius: 50%;
- background: -webkit-radial-gradient(50% 0px, circle, #ffffff, rgba(255, 255, 255, 0) 58%);
- -webkit-filter: blur(5px);
- z-index: 2;
- }
呈现的效果如下:
光照效果
上面的效果已经很有立体感了,这里我们再改变一下光照效果,让球体看起来更像斯诺克台球。
- .ball {
- display: inline-block;
- width: 100%;
- height: 100%;
- margin: 0;
- border-radius: 50%;
- position: relative;
- background: -webkit-radial-gradient(50% 120%, circle cover, #323232, #0a0a0a 80%, #000000 100%);
- }
- .ball:before {
- content: "";
- position: absolute;
- background: -webkit-radial-gradient(50% 120%, circle cover, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0) 70%);
- border-radius: 50%;
- bottom: 2.5%;
- left: 5%;
- opacity: 0.6;
- height: 100%;
- width: 90%;
- -webkit-filter: blur(5px);
- z-index: 2;
- }
- .ball:after {
- content: "";
- width: 100%;
- height: 100%;
- position: absolute;
- top: 5%;
- left: 10%;
- border-radius: 50%;
- background: -webkit-radial-gradient(50% 50%, circle cover, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8) 14%, rgba(255, 255, 255, 0) 24%);
- -webkit-transform: translateX(-80px) translateY(-90px) skewX(-20deg);
- -webkit-filter: blur(10px);
- }
效果如下:
8 号球效果
我们再给球体加上数字 8,这样就有了台球黑8 的效果了。
HTML 代码:
- <section class="stage">
- <figure class="ball">
- <span class="shadow"></span>
- <span class="eight"></span>
- </figure>
- </section>
CSS 代码:
- .ball .eight {
- width: 110px;
- height: 110px;
- margin: 30%;
- background: white;
- border-radius: 50%;
- -webkit-transform: translateX(68px) translateY(-60px) skewX(15deg) skewY(2deg);
- position: absolute;
- }
- .ball .eight:before {
- content: "8";
- display: block;
- position: absolute;
- text-align: center;
- height: 80px;
- width: 100px;
- left: 50px;
- margin-left: -40px;
- top: 44px;
- margin-top: -40px;
- color: black;
- font-family: Arial;
- font-size: 90px;
- line-height: 104px;
- }
效果如下:
眼球效果
上面的效果怎么样?相信你已经很惊讶了。不过,CSS 能坐的远不止这些,这里我们再来实现一个眼球效果。
HTML 代码如下:
- <section class="stage">
- <figure class="ball">
- <span class="shadow"></span>
- <span class="iris"></span>
- </figure>
- </section>
核心 CSS 代码如下:
- .iris {
- width: 40%;
- height: 40%;
- margin: 30%;
- border-radius: 50%;
- background: -webkit-radial-gradient(50% 50%, circle cover, #208ab4 0%, #6fbfff 30%, #4381b2 100%);
- -webkit-transform: translateX(68px) translateY(-60px) skewX(15deg) skewY(2deg);
- position: absolute;
- -webkit-animation: move-eye-skew 5s ease-out infinite;
- }
- .iris:before {
- content: "";
- display: block;
- position: absolute;
- width: 37.5%;
- height: 37.5%;
- border-radius: 50%;
- top: 31.25%;
- left: 31.25%;
- background: black;
- }
- .iris:after {
- content: "";
- display: block;
- position: absolute;
- width: 31.25%;
- height: 31.25%;
- border-radius: 50%;
- top: 18.75%;
- left: 18.75%;
- background: rgba(255, 255, 255, 0.2);
- }
最终效果:
会动的眼球
上节实现了眼球效果,这里我们一些关键帧来让眼球动起来,核心 CSS 代码如下:
- @-webkit-keyframes move-eye-skew {
- 0% {
- -webkit-transform: none;
- }
- 20% {
- -webkit-transform: translateX(-68px) translateY(30px) skewX(15deg) skewY(-10deg) scale(0.95);
- }
- 25%, 44% {
- -webkit-transform: none;
- }
- 50%, 60% {
- -webkit-transform: translateX(68px) translateY(-40px) skewX(5deg) skewY(2deg) scaleX(0.95);
- }
- 66%, 100% {
- -webkit-transform: none;
- }
- }
这样,眼球就动起来了,很传神吧?!
//
英文链接:CSS Balls:CSS 实现的各种圆效果【附在线演示】
编译来源:梦想天空 ◆ 关注前端开发技术 ◆ 分享网页设计资源
你想不到的!CSS 实现的各种球体效果【附在线演示】的更多相关文章
- CSS 实现的各种球体效果
CSS 实现的各种球体效果[附在线演示] CSS 可以实现很多你想不到的效果,今天我们来尝试使用 CSS 实现各种球体效果.有两种方法可以实现,第一种是使用大量的元素创建实际的 3D 球体,这种方法有 ...
- 直接在 CSS 中引用 FONTAWESOME 图标(附码表)
直接在 CSS 中引用 FONTAWESOME 图标(附码表) 因此我们如果不想用 Fontawesome 提供的类,只想在 css 里面引用图标的话,可以这样子,请自行脑补: .icon:befor ...
- 炫!一组单元素实现的 CSS 加载进度提示效果
之前的文章个大家分享过各种类型的加载效果(Loading Effects),这里再给大家奉献一组基于单个元素实现的 CSS 加载动画集合.这些加载效果都是基于一个 DIV 元素实现的,十分强悍. 温馨 ...
- Codrops 优秀教程:CSS 3D Transforms 实现书本效果
这个使用 CSS 3D Transforms 实现创意书本效果的来自 Codrops 网站.你可以看到两种类型的书设计:精装书和平装书.这两个效果都可以很容易地使用 CSS 修改.赶紧体验一下吧. ...
- Planetary.js:帮助你构建超炫的互动球体效果
Planetary.js 是一个 JavaScript 库,用于构建互动球体效果.它使用 D3 和 TopoJSON 解析和渲染地理数据.Planetary.js 采用了基于插件的架构,即使是默认的功 ...
- CSS发光边框文本框效果
7,166 次阅读 ‹ NSH Blog 网页设计 CSS发光边框文本框效果 或许你看过Safari浏览器下,任何输入框都会有一个发光的蓝色边框,这不单纯只是蓝色边框而已,其实包含了许多CSS3技巧知 ...
- CSS 实现滚动进度条效果
参考:https://www.w3cplus.com/css/pure-css-create-scroll-indicator.html 前言:细化总结.参考的文章作者已经写的很详细了.这里在从初学者 ...
- 用html+css+js实现选项卡切换效果
文章转载自:http://tongling.github.io/JSCards/ 用html+css+js实现选项卡切换效果 使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材 ...
- [前端] html+css+javascript 实现选项卡切换效果
用html+css+js实现选项卡切换效果使用之前学过的综合知识,实现一个新闻门户网站上的常见选项卡效果: 文字素材:房产: 275万购昌平邻铁三居 总价20万买一居 200万内购五环三居 140万安 ...
随机推荐
- linux用户不在sudoers文件中
*** is not in the sudoers file. This incident will be reported." (用户不在sudoers文件中--) 处理这个问题很简单 ...
- 基于struts2和hibernate的分页实现
在拜读了各位大牛的博客后,加以修改和添加总算是借鉴出了一个可行的分页实现.(●'◡'●) 话不多说,先贴两张效果图吧 接下来是实现代码: pagingDAOImpl.java public class ...
- The Solution of UESTC 2016 Summer Training #1 Div.2 Problem C
Link http://acm.hust.edu.cn/vjudge/contest/121539#problem/C Description standard input/output After ...
- 自定义cell右侧 多按钮
#import "ViewController.h" @interface ViewController () <UITableViewDataSource, UITable ...
- 公司内部培训AlwaysOn PPT分享
公司内部培训AlwaysOn PPT分享 下载地址: http://files.cnblogs.com/files/lyhabc/alwayson.ppt
- Expert 诊断优化系列------------------给TempDB 降温
前面文章针对CPU.内存.磁盘.语句.等待讲述了SQL SERVER的一些基本的问题诊断与调优方式.为了方便阅读给出导读文章链接方便阅读: SQL SERVER全面优化-------Expert fo ...
- Python黑帽编程2.4 流程控制
Python黑帽编程2.4 流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容. 2.4.1 if …..else 先上一段代码: #!/usr/bin/python # - ...
- 给Macbook Pro更换固态硬盘并转移系统的最简单办法
没有固态硬盘,再快的CPU,再强悍的显卡,都是白搭,由于“木桶原理”,瓶颈就在这里啊.如今的固态硬盘价格跌了很多,我记得去年我买的120G的固态硬盘还要将近600元,而现在只需要不到400了. 我 ...
- 使用VS+VisualGDB编译Linux版本RCF
RPC通信框架--RCF介绍中说了,RCF本身是支持跨平台的,其代码放到Linux平台,是可以通过gcc.make等工具,编译通过的. 官方提供的源码中,只有cmake编译脚本,并没有提供Makefi ...
- js中几种实用的跨域方法原理详解
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...