当前位置: 首页 > news >正文

巧妙的CSS

一个界面设计优秀的网站总是更能吸引用户的目光。界面设计优秀与否还是主要看UI设计师的能力,但是要想还原设计师给出UI,那么你的CSS编写能力就至关重要。

CSS和JS一样,也在不断的发展中,随着各个浏览器对CSS3的逐渐支持,CSS能发挥的作用越来越来大。熟练的使用CSS技术能编写出优秀的界面,还能减少JS的工作量。

下面将介绍一些巧妙地使用CSS的方法。

边框和背景

半透明边框

半透明的边框一般来说直接设置边框颜色透明度就好了,但是在元素有背景颜色的情况下,背景色会延伸到边框区域,影响了边框的显示。这里可以使用background-clip来解决。

<style>
.transparent-border {
  width: 100px;
  height: 100px;
  border: 10px solid rgba(0,0,0,0.2);
  background-color: blue;
  background-clip: padding-box; // border-box | padding-box
}
</style>
<div class="transparent-border"></div> 
复制代码

多重边框

边框出了可以使用border来写,还可以使用box-shadow来模拟,主要使用到属性的第四个参数,阴影的尺寸。由于box-shadow是可以写多个的,所以我们来用来做多边框的情况。注意第一层投影是在最上层,同时投影不影响布局,也不响应鼠标事件。

<style>
.multiple-border {
    width: 100px;
    height: 100px;
    margin: 20px;
    box-shadow: 0 0 0 5px #655, 0 0 0 10px deeppink;
    border-radius: 5px;
}
</style>
<div class="multiple-border"></div> 
复制代码

条纹背景

条纹背景可以用线性渐变来写,在每个区间都使用纯色即可。

注意下线性渐变中,如果我们把第二个色标的位置值设置为 0,那它的位置就总是会被浏览器调整为前一个色标的位置值

<style>
div {
  width: 100px;
  height: 100px;
  background: linear-gradient(#fb3 33.3%,#58a 0, #58a 66.6%, yellowgreen 0);
  background-size: 100% 45px;
  margin: 20px;
}
</style>
<div></div>
复制代码

形状

椭圆

border-radius 可以单独指定水平 和垂直半径, 只要用一个斜杠( /) 分隔这两个值即可

<style>
div {
  width: 100px;
  height: 75px;
  border-radius: 100px / 75px;
  background: linear-gradient(#fb3 33.3%,#58a 0, #58a 66.6%, yellowgreen 0);
  background-size: 100% 45px;
  margin: 20px;
}
</style>
<div></div>
复制代码

平行四边形

第一种方法用两个标签,第一层在X轴方向扭曲,内层在扭曲回来保证文字正常显示。

<style>
.button { display: inline-block; background-color:#fb3; transform: skewX(-45deg); }
.button > span { display: inline-block; transform: skewX(45deg); }
</style>
<a href="#yolo" class="button">
    <span>Click me</span>
</a>
复制代码

第二种方法就是用到伪元素了。

<style>
.button {
    position: relative;
/* 其他的文字颜色、内边距等样式…… */
}
.button::before {
    content: ''; /* 用伪元素来生成一个矩形 */
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    z-index: -1;
    background: #58a;
    transform: skew(-45deg);
}
</style>
<a href="#yolo" class="button">
    Click me
</a>
复制代码

菱形

<style>
.picture {
    width: 25px;
    height: 25px;
    transform: rotate(45deg);
    overflow: hidden;
    margin: 20px;
    background: #58a;
}
.picture > span {
    display: inline-block;
    transform: rotate(-45deg);
}
</style>
<div class="picture">
    <span>Pic</span>
</div>
复制代码

梯形Tab

梯形也是可以用CSS3实现,原理是利用CSS3的3D效果,把矩形往“后面”倒,形成梯形。

效果

视觉效果

单侧投影

blur 4px: 这在本质上表示在阴影边缘发生阴影色和纯透明色之间的颜色过渡长度近似于模糊半径的两倍(比如在这里是 8px)

配合负值的阴影大小就可以实现单侧投影。

box-shadow: 0 4px 4px -4px black;
复制代码

邻边投影

box-shadow: 3px 3px 6px -3px black;
复制代码

双侧投影

box-shadow: 5px 0 5px -5px black,-5px 0 5px -5px black;
复制代码

不规则投影

filter: drop-shadow(2px 2px 4px rgba(0,0,0,.5));
复制代码

总结

CSS的功能还是很强大的,在不断学习JS的同时,不能忘了CSS技能的提升。上面的技巧主要来自《CSS揭秘》

相关文章:

  • 第五周 网络
  • ASP.NET CORE MVC 2.0 发布到IIS 配置问题
  • 我的JS日记-隐式转换相关知识
  • 流计算独享模式正式邀测
  • 微信小程序接口改版后的登录和会话保持流程
  • Spring Cloud Finchley 正式发布,包含 4 个重大更新!
  • React全家桶项目
  • Linux 配置双网卡绑定,实现负载均衡
  • Python程序的执行原理
  • 使用 node(wd)编写 Appium 测试用例--测试2
  • [BZOJ2850]巧克力王国
  • 刚刚!“跨境汇款”被区块链重新定义,马云:源于多年前一个承诺
  • 大数据理论体系总结--数据仓库管理与全链路数据体系
  • 局域网大型文件分发的可能解决方案
  • 搭建视频监控平台《监视我的团宝宝》
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • cookie和session
  • ES6之路之模块详解
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • gf框架之分页模块(五) - 自定义分页
  • Java读取Properties文件的六种方法
  • MYSQL 的 IF 函数
  • Promise初体验
  • Ruby 2.x 源代码分析:扩展 概述
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 从PHP迁移至Golang - 基础篇
  • 缓存与缓冲
  • 精彩代码 vue.js
  • 你真的知道 == 和 equals 的区别吗?
  • 少走弯路,给Java 1~5 年程序员的建议
  • 什么是Javascript函数节流?
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Apache SeaTunnel 究竟是什么?
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • (4)Elastix图像配准:3D图像
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (TOJ2804)Even? Odd?
  • (WSI分类)WSI分类文献小综述 2024
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)Linux——Linux常用指令
  • (附源码)ssm高校实验室 毕业设计 800008
  • (三)elasticsearch 源码之启动流程分析
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • *2 echo、printf、mkdir命令的应用
  • .cn根服务器被攻击之后
  • .NET 解决重复提交问题
  • .net 生成二级域名
  • .Net各种迷惑命名解释
  • .py文件应该怎样打开?
  • .sys文件乱码_python vscode输出乱码