龙空技术网

CSS-画一个红苹果

web端开发 1549

前言:

今天朋友们对“css杂色”大约比较讲究,我们都需要剖析一些“css杂色”的相关文章。那么小编同时在网摘上收集了一些关于“css杂色””的相关内容,希望大家能喜欢,咱们一起来了解一下吧!

最近每天都带一个苹果加餐,有次吃到一个十分漂亮的红苹果,突然觉得,可以试着画一个苹果看看。

之前确实无法想象,可以使用CSS能画出一个苹果。

先看效果:

你没有看错,这个不是真苹果。仅仅一百多行代码就可以实现的CSS的红苹果。我自己看到最终效果都惊呆了。

第一步画出苹果的轮廓:

.apple {  position: relative;  width: 300px;  height: 270px;  background-color: #bf2934;  border-radius: 160px 150px 145px 150px/160px 140px 210px 190px;}

第二步:将苹果变得更加立体

1)右上角使用亮色内阴影,画出高光效果

2)左下角使用两层暗色内阴影,画出背光的暗色效果

3)左上角增加一个亮色高光

4)整体增加径向渐变的背景,将重心高光,四周暗色

.apple {  position: relative;  width: 300px;  height: 270px;  background: radial-gradient(#0000, rgba(0, 0, 0, .1)),    radial-gradient(rgba(239, 156, 109, .2), #0000);  background-color: #bf2934;  border-radius: 160px 150px 145px 150px/160px 140px 210px 190px;  box-shadow: inset 30px -20px 30px 20px rgba(0, 0, 0, .15),    inset 10px -10px 15px 0 rgba(0, 0, 0, .15),    inset 10px 10px 5px 0 rgba(255, 255, 255, .05),    inset -10px 10px 30px 10px rgba(237, 115, 84, .3);}

第三步:增加光源反光的高亮效果

使用before伪元素,画一个亮色的椭圆。橘色的阴影。然后整体模糊一下

.apple::before {  position: absolute;  left: 135px;  top: 50px;  content: '';  width: 80px;  height: 30px;  transform: skew(-20deg) rotate(10deg);  border-radius: 45%;  background: rgba(255, 255, 255, .65);  box-shadow: 2px 10px 30px 22px rgba(239, 156, 109, 1);  filter: blur(5px);}

哇,一不小心,画出来了一个西红柿

好吧,这个时候, 我其实可以停下来,先发一篇画西红柿的文章了。

第四步:准备一下顶部叶柄的凹陷

这个凹陷效果使用after伪元素,画一个黑色透明色渐变的椭圆,然后使用clip-path,截取顶部扇形部分。

.apple::after {  position: absolute;  left: 90px;  top: 2px;  width: 120px;  background: radial-gradient(rgba(0, 0, 0, .3), rgba(239, 156, 109, .2));  height: 30px;  content: '';  border-radius: 50%;  filter: blur(2px);  clip-path: polygon(50% 55%, 150% 0, -50% 0);  filter: blur(1px);}

真是一个漂亮的西红柿。。。。。。。

苹果和西红柿的区别,主要是,苹果没有那么的光滑,颜色没有这么完美。我们需要一些杂色。

第五步:增加杂色条纹

好吃的苹果,都有纵向的条纹杂色。这里我们是模糊后的border来模拟。由于需要很多杂色,这里使用js添加,稍微做点随机。

.stripe {  position: absolute;  width: 300px;  height: 270px;  border-radius: 160px 150px 145px 150px/160px 140px 210px 190px;  border-right: solid 2px rgba(239, 156, 109, .2);  transform: scaleX(.9);  filter: blur(4px);}
function addStripe() {  var fragment = document.createDocumentFragment()  var count = 15  for (var i = -count; i < count; i++) {    var stripe = document.createElement('div')    stripe.className = 'stripe'    stripe.style.opacity = Math.max(1, 0.5 + Math.random())    stripe.style.transform = `scaleX(${(i / count + Math.random() * 0.2).toFixed(2)})`    fragment.appendChild(stripe)  }  document.querySelector('.apple').appendChild(fragment)}

是不是突然就像苹果了

第六步:增加噪点

好吃的苹果,会有很多小小的斑点。这里,我们使用js增加一些随机的斑点。

.spot {  position: absolute;  width: 4px;  height: 4px;  border-radius: 50%;  background: rgba(239, 156, 109, .6);  filter: blur(1px);}
function addSpot() {  var count = 60  var fragment = document.createDocumentFragment()  for (var i = 0; i < count; i++) {    var spot = document.createElement('div')    spot.className = 'spot'    spot.style.left = 5 + ~~(Math.random() * 90) + '%'    spot.style.top = 5 + ~~(Math.random() * 90) + '%'    spot.style.opacity = 0.2 + Math.random() * 0.4    spot.style.transform = `scaleX(${Math.random() * 0.8 + 0.2}) scaleY(${Math.random() * 0.8 + 0.2}) rotate(${~~(360 * Math.random())}deg)`    fragment.appendChild(spot)  }  document.querySelector('.apple').appendChild(fragment)}

苹果变得更加诱人了。

再做一些细节优化。

第七部:给苹果加个叶柄。

买过西瓜的都知道,叶柄是证明西瓜新鲜与否的标志。苹果亦然。

.petiole {  position: absolute;  transform: translate(155px, -48px) rotate(35deg);  width: 20px;  height: 60px;  border-top: solid 15px transparent;  border-left: solid 10px rgb(162, 76, 9);  border-bottom: solid 8px transparent;  border-radius: 50%;}.petiole.left {  transform: translate(154px, -49px) rotate(35deg);  border-left-color: rgb(123, 48, 24);}
<div class="apple">  <div class="petiole left"></div>  <div class="petiole"></div></div>

是不是新鲜很多。

最后,我们给苹果加个阴影,看着更加立体一点。

.shadow {  position: absolute;  width: 300px;  height: 270px;  background-color: rgba(0, 0, 0, .15);  transform-origin: 50% 100%;  transform: translate(5px, 5px) skew(60deg) scaleY(.25);  border-radius: 160px 150px 145px 150px/160px 140px 210px 190px;  box-shadow: 0 0 20px rgba(0, 0, 0, .15);  filter: blur(4px);}

娇艳欲滴的大苹果,完成!!!!

代码仓库地址:

演示地址:

标签: #css杂色