整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端实用的CSS技巧

、首字母大写

::first-letter 伪类选择器用来指定元素第一个字母的样式。

2、透明图片阴影

相信你一定用过box-shadow属性给盒子设置阴影吧,但是当你想要给透明图片添加阴影的时候,却看起来像加了个边框!这时候神奇的drop-shadow就派上用场了。

drop-shadow 的工作方式是,其遵循给给定图片的 Alpha 通道。因此阴影是基于图片的内部形状,而不是显示在图片外面。

3、镂空文字

-webkit-text-stroke: 1px #1e80ff;

注意:镂空文字属性ie浏览器不兼容

4、背景文字

利用background-clip: text;规定背景的绘制区域,再把文字颜色设置为透明实现。

5、网页灰度效果

grayscale(amount)函数将改变输入图像灰度。amount 的值定义了灰度转换的比例。值为 100% 则完全转为灰度图像,值为 0% 图像无变化。若未设置值,默认值是 0。(如下鼠标悬浮体验效果)

6、flex布局最后一行左对齐

方法1:使用js补齐元素,例如,每行展示3个元素,现在一共有5个元素,那么我们就可以在最后补一个同宽度的透明元素。

方法2:justify-content设置为space-between实现两端对齐效果,最后一行再特殊处理:思路为选中最后一个元素,设置其右边距,挤到只能容纳最后一行元素的宽度。

方法3:justify-content设置为flex-start,先将全部元素左对齐,然后计算出每个元素的间距,通过gap设置元素间距(如果行列间距不同,可以用column-gap设置列间距,row-gap设置行间距),伪装实现两端对齐的效果。

7、毛玻璃背景效果

使用backdrop-filter与filter都可以写出高斯模糊的效果,但是两者使用起来还是有区别的,而且使用的目标也不同。


区别:

backdrop-filter:使背景模糊,不会影响到背景下面的图片

filter:通常是定义 img的可视效果,修改图片的模糊效果,值越大越模糊

8、inline元素间的空白间隙

行内元素排列的时候,明明没有边框,也没有间距,但就是有空隙。

其实间隙是由换行或者回车导致的,你可以将标签代码都写同一行即可解决。但是这样有点呆,我们可以通过设置父元素的font-size为0将空隙缩小到0。

9、文字溢出省略

单行文本:

overflow: hidden;

text-overflow: ellipsis;

white-space: nowrap;

多行文本:

display: -webkit-box;

-webkit-box-orient: vertical;

-webkit-line-clamp: 3;(多少行省略)

overflow: hidden;

注意:ie不兼容,可用min-height:省略的行数*行高 来解决;

10、列表除最后一个元素外,其他元素统一样式

一般这种情况,我们可以先全部统一样式,然后再单独设置最后一个元素样式覆盖公共样式。

也可以用 :not 选择器直接设置除了最后一个元素的样式。

:not(selector) 选择器匹配每个元素是不是指定的元素/选择器。

11、隐藏滚动条

.element::-webkit-scrollbar {

display: none;

}

12、禁止用户选择

div {

-webkit-touch-callout: none;

-webkit-user-select: none;

-khtml-user-select: none;

-moz-user-select: none;

-ms-user-select: none;

user-select: none;

}

13、暂停动画

animation-play-state可以控制动画状态

次画的是QQ浏览器图标,比较复杂,各种高光渐变色内阴影等。其实,CSS画画就和用PS画画一样,从最底层,一层一层往上画,最后合成一张图:

CSS画QQ浏览器图标

1、让容器居中,同时将body背景变成灰色,可以看得更清楚

html,body{
 height:100%;
}
body{
 display: flex;
 justify-content: center;
 align-items: center;
 background-color: #eee;
}

2、画一个蓝色渐变圆形,作为外边的蓝色环(现在还是圆,不是环),相对定位,这样里面的所有元素都可以以它为定位点了:

.logo{
 width: 300px;
 height:300px;
 background: linear-gradient(to right bottom,#66adff,#1a6adb);
 border-radius: 999px;
 position: relative;
}
<div class="logo"></div>

效果图:

3、给 logo 的 after 上个灰色,做出镂空效果:

.logo:after{
 position: absolute;
 width: 150px;
 height: 150px;
 content:'';
 background-color: #eee;
 border-radius: 999px;
 z-index: 15;
 left: 50%;
 top:50%;
 margin-left: -75px;
 margin-top:-75px;
}

效果图:

4、给 logo 的 before 加上渐变背景,渐变色和 logo 一样,只不过颜色反过来,这样有凹陷的感觉,同时将它治愈 after 的下面,比 after 稍微大点:

.logo:before{
 position: absolute;
 width: 166px;
 height: 166px;
 content:'';
 background: linear-gradient(to right bottom,#1a6adb,#66adff);
 border-radius: 999px;
 z-index: 9;
 left: 50%;
 top:50%;
 margin-left: -83px;
 margin-top:-83px;
}

效果图:

5、由于边框不支持渐变,我们只能接着加div,来画出刚才的 before 的高光:

.before-high-light{
 position: absolute;
 width: 168px;
 height: 168px;
 content:'';
 background: linear-gradient(to right bottom,#96d9ff,#5cafff,#96d9ff);
 border-radius: 999px;
 z-index: 8;
 left: 50%;
 top:50%;
 margin-left: -84px;
 margin-top:-84px;
}
<div class="logo">
 <div class="before-high-light"></div>
</div>

效果图:

6、画左上角的大片高光,它是被遮挡在中间圆的下面,所以,z-index要更低,同时它的颜色是从半透明的白色到无,大小要比 logo 小个一两像素:

.left-top-high-light{
 position: absolute;
 width: 298px;
 height: 298px;
 content:'';
 background: linear-gradient(to right bottom,rgba(255,255,255,.8),rgba(255,255,255,0) 50%);
 border-radius: 999px;
 z-index: 7;
 left: 50%;
 top:50%;
 margin-left: -149px;
 margin-top:-149px;
}
<div class="logo">
 <div class="before-high-light"></div>
 <div class="left-top-high-light"></div>
</div>

效果图:

7、画云,一共三朵,放在右下角,白色背景,利用内阴影,给云上色(放在chrome调整,这块比较麻烦,需要细细调),由于css容器样式的局限性,不能让云成为一个整体,建议这类可以考虑用svg或者canvas实现,我这里还是用div来实现:

.clouds{
 position: absolute;
 width: 90px;
 height: 90px;
 background-color: #fff;
 border-radius: 999px;
 z-index: 16;
 bottom: 20px;
 right:60px;
 box-shadow: -3px 15px 12px 0 rgba(42,127,236,.3) inset;
}
.clouds:before{
 content:'';
 position: absolute;
 width: 100px;
 height: 70px;
 background-color: #fff;
 border-radius: 999px;
 bottom: -20px;
 left:-30px;
 box-shadow: 5px -5px 8px 0 rgba(42,127,236,.3) inset;
}
.clouds:after{
 content:'';
 position: absolute;
 width: 123px;
 height: 60px;
 background-color: #fff;
 border-radius: 0 999px 999px 0;
 bottom: -20px;
 right:-30px;
 box-shadow: -16px -9px 11px 0 rgba(42,127,236,.3) inset;
}
<div class="logo">
 <div class="before-high-light"></div>
 <div class="left-top-high-light"></div>
 <div class="clouds"></div>
</div>

效果图:

8、左下角,云之下的高光,这个高光容器,宽高为 logo 的一半,左下角为全圆角,其他三个角可以不设置圆角,z-index 置于前面所有内容的下面,logo 的上面,背景为从左上到右下,从无到有的白色渐变,如果觉得太生硬,可以稍微给点羽化:

.left-bottom-high-light{
 position: absolute;
 width: 150px;
 height: 150px;
 content:'';
 background: linear-gradient(to right bottom,rgba(255,255,255,0) 50%,rgba(255,255,255,1) 70%);
 border-radius:0 0 0 999px;
 z-index: 14;
 left:0;
 bottom:0;
 filter: blur(1px);
}
<div class="logo">
 <div class="before-high-light"></div>
 <div class="left-top-high-light"></div>
 <div class="clouds"></div>
 <div class="left-bottom-high-light"></div>
</div>

效果图:

9、底部阴影 shadow,可以用背景色+羽化来实现,也可以用 box-shadow 来实现,这里我们用第一种方法:

.shadow{
 position: absolute;
 width:200px;
 height:10px;
 content:'';
 background:#666;
 border-radius:50%;
 z-index: 1;
 left: 50%;
 bottom:-3px;
 margin-left: -100px;
 filter: blur(4px);
}
<div class="logo">
 <div class="before-high-light"></div>
 <div class="left-top-high-light"></div>
 <div class="clouds"></div>
 <div class="left-bottom-high-light"></div>
 <div class="shadow"></div>
</div>

效果图:

10、顶部高光 high-light,实现方法和上面的阴影一样:

.high-light{

position: absolute;

width:100px;

height:20px;

content:'';

background:rgba(255,255,255,.9);

border-radius:50%;

z-index: 15;

left: -8px;

top: 33px;

filter: blur(4px);

transform: rotate(-45deg);

}

<div class="logo">

<div class="before-high-light"></div>

<div class="left-top-high-light"></div>

<div class="clouds"></div>

<div class="left-bottom-high-light"></div>

<div class="shadow"></div>

<div class="high-light"></div>

</div>

最终效果图:

作镂空的较为复杂的模型,不是传统方法所能胜任的。假如我们通过遮罩将一个球体需要镂空的地方去掉,再为其增加厚度,球体就可以变成复杂的镂空球体。而ZBrush®的自定义遮罩形状和ZBrush新加的功能Subtool中的Extract功能制作有厚度的镂空球体为此方法提供了实际操作的可能。

制作过程和技巧

1.ZBrush中的标准几何体是参数化物体,而参数化物体是不能用Subtool下的Extract命令的,所以要先将参数化物体进行转换。

选择Tool>Sphere3D, 在ZBrush中建立一个球体。点击Tool>Make Polymesh3D将参数化球体转化为Polymesh球体以便进行Extract命令。如图所示。

为做出更多细节,增大球体的细分,点击Tool>Geometry>Divide将球体增加到第四级细分(此步骤按读者电脑配置而定,越高越好)。如图所示。

2.假如确定了遮罩形状,用按住Ctrl键拖动的方法建立遮罩,遮罩在球体上的分布不能达到我们的需要,因为遮罩不能精确的定位。如图所示。

而贴图因为有UV分布的关系可以在模型上精确的分布,我们能否利用贴图的精确定位的能力来决定遮罩的分布呢,答案是肯定的。在Tool>Masking下的Mask By Intensity命令可以按照贴图灰度的强度控制遮罩的分布。

点击Texture>Import或点击如图位置将素材图片AsileFX_Alpha_0329导入。如图所示。

旋转视图观察发现贴图的分布并不想我们想象中的完美,两边更有极点,如图所示,这是UV的分布问题,只要调整UV的分布即可。

点击Tool> Geometry>Lower Res降低球体细分至第一级,选择Tool>Texture>Uvp将球体的UV分布调节成展平式分布,使贴图的分布达到较为满意的效果。如图所示。

注:1.只有在最低细分下才可以调节UV的分布方式,否则将会有如下提示。

3.Tool>Texture下有几种UV的分布方式,计算模式各有优缺点,选择时按情况而定。返回球体第四级细分,点Tool>Masking>Mask By Intensity选项,使遮罩按照贴图的灰度分布。

在Texture菜单下选择Texture off,或者在如图所示位置选择,去掉贴图,发现遮罩遮住贴图的黑色部分与我们需要的相反,按住Ctrl键左键单击视图使遮罩反向,达到我们要求的遮罩。如图所示。

4.接下来就可以利用Extract命令产生新的镂空物体。

单击Tool>Subtool>Extract,按照球体的遮罩产生带有一定厚度的新物体,并在Subtool里产生新的一层,如图所示。

关闭球体的显示,就可以看到球体的镂空效果了。

5.镂空球体的边缘不是很圆滑,这是因为贴图的质量和球体的细分不足,只要进行一下平滑,即可达到我们想要的效果,如图所示。

选择Tool>Deformation>Smooth,选择XYZ将其值调至100,如图。

注:镂空球体平滑次数可视情况而定,制作出的边缘平滑度也和细分有关,细分越高初始的边缘也越光滑。

6.使用同样的方法利用图AsileFX_Alpha_0347再建立另一个不同花纹的镂空球体。如图所示。

只关闭球体显示后发现两个镂空球体一样的,如下图所示,不符合我们的要求。我们可以利用Deformation调整两个镂空球体的空间关系来达到我们所要求的效果。

选择第二次建立的镂空球体层(选择那一层楼空球体操作可按照个人喜好),选择Tool>Deformation>Size,选择XYZ将其值调至-20。两个楼空球体变得一大一小。

观察发现因为贴图在球体中间难免有拉伸,造成镂空效果在中间比较简单,为保证其艺术效果,可以将镂空球体稍微建议旋转加以旋转,使整体复杂感增强。

选择第二次建立的镂空球体层(选择那一层楼空球体操作可按照个人喜好),选择Tool>Deformation>Rotate,选择XY将其值调至90。

注:Deformation下的XYZ是所选命令可影响的轴向,在调节平滑和大小的时侯,打开三个轴向是因为要效果要对整体进行,而旋转时,只要在一个平面进行,所以只要选择XY即可。至此模型制作完成。如图所示。

(原文来自:http://www.zbrushcn.com/shili/loukong-xiaoguo.html)