css 开发注意点与技巧-1

前言

提示:个人觉得CSS是每个前端开发人员都必须掌握的基础,以完成相应的交互和终端设备的响应。
在项目开发中,有些容易被忽略的小问题带来项目后期的胶水代码。


1.使用相对单位

常我们在项目开发中,使用px作为尺寸的单位,而不是使用相对单位,如:rem、em等。在万物互联的时代,最好的方式是相对单位rem、vh、vw等现代 CSS 布局(如 flexbox 和 grid)方式,最大限度的支持各种终端设备

  1. 绝对单位 px 是一个绝对单位,主要是因为它是固定的,不会根据任何其他元素的测量而改变
  2. 相对单位 vw(viewpoint width):相对于视口的宽度
  3. 相对单位 vh(viewpoint height):相对于视口的高度
  4. 相对单位 rem(font size of the root element):相对于根 ( ) 元素 (默认字体大小通常为 16px )
  5. 相对单位 em(font size of the element):相对于父元素
  6. 相对单位 % :相对于父元素

2.代码复用

当然需要提高代码复用,还是需要一定的CSS的基础,来设计好代码结构


/* 不提倡 */
.container {
    background-color: #efefef;
    border-radius: 0.5rem;
}

.sidebar {
    background-color: #efefef;
    border-radius: 0.5rem;
}

/* 建议 */
.container,
.sidebar {
    background-color: #efefef;
    border-radius: 0.5rem;
}

3.CSS重置

每个浏览器都有自己的默认样式,因此,当网页不包含CSS时,浏览器会为文本添加一些基本的默认样式、填充、边距等。可以通过使用通用选择器 * 重置 padding、margin、box-sizing 和 font-family 来实现这一点。
像这样:


* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
    font-family: Arial, Helvetica, sans-serif;
}
ul,
li {
    list-style: none;
}
// 不过这些问题现在基本都被框架解决了,对于初学者建议可以模仿但不建议一开始就上框架。

4.不使用颜色名称

不要使用red、blue等颜色名称,相反,建议使用颜色的十六进制值。因为当使用像 red 这样的颜色名称时,在不同的浏览器或者设备中显示会有所不同。


/* 不提倡 */
.container {
    background-color: red;
}

/* 建议 */
.container {
    background-color: #ff0000;
}

5.使用简写属性

在CSS中,多用简写属性,少用单独属性


/* 不提倡 */
.container {
    background-image: url(bg.png);
    background-repeat: no-repeat;
    background-position: center;
}

/* 建议 */
.container {
    background: url(bg.png) no-repeat center;
}

6.文本截取

在项目开发中,有些列表只需要显示一行文字,有些列表需要显示固定函数的文字,过去通过字符截取的方式来实现,但存在截取不统一(文本内容不同英文、中文、标点符号等),再加上现在各种终端的适配,不足就被放大了。现在最佳的方式是通过CSS来实现,在文本最后增加省略号(…)

// 元素必须是 block 或 inline-block,如果溢出被隐藏,则文本溢出不起作用,并且元素必须具有定义的宽度或最大宽度集。

//单行截取
p {
    display: inline-block;
    max-width: 300px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

//多行截取
p {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3; /* 需要显示的行数 */
    overflow: hidden;
}

7.垂直居中

垂直居中是一个很常见的需求,有很多实现方式,在伸缩容器内的任何东西垂直居中

.flex-vertically-center {
    display: flex;
    align-items: center;
}
// inline、inline-block、table-cell 块垂直对齐:
img {
    /* 只对block有效 */
    display: inline-block;
    vertical-align: middle;
}
// 相对容器中垂直居中的绝对元素,下面代码是.sub-container在.container垂直居中:
.container {
    position: relative;
}
.sub-container {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

8.水平居中

与垂直对齐类似,不过水平居中更容易一点

// 块居中

.block-element {
    display: block;
    margin: 0 auto;
}

// 内联或内联块文本居中
.container {
    text-align: center;
}

// 在相对容器内水平居中绝对元素:
.container {
    position: relative;
}
.sub-container {
    position: absolute;
    top: 50%;
    transform: translateX(-50%);
}

// flex 容器内的任何内容水平居中:
.flex-vertically-center {
    display: flex;
    justify-content: center;
}

9.设置下一个或上一个兄弟元素样式

对元素前面和后面的元素进行样式设置,在项目开发中很有用。例如10个按钮,当前按钮下一个及下一个的兄弟元素设置不同的颜色。


<div>
    <button>1</button>
    <button>2</button>
    <button>3</button>
    <button>4</button>
    <button class="current">current</button>
    <button>+ button</button>
    <button>~ button</button>
    <button>~ button</button>
    <button>~ button</button>
    <button>~ button</button>
</div>

.current ~ button {
    background-color: #000;
    color: #ffffff;
}
.current {
    background-color: #ff0000;
}
.current + button {
    background-color: #333;
}

// 接下来设置当前按钮前面样式,css代码如下:
button {
    padding: 10px 15px;
    border: 1px solid #444444;
    font-size: 12px;
    background-color: #ff0000;
    color: #000;
}
.current {
    background-color: #000;
    color: #fff;
}
.current ~ button {
    background: initial;
}
.container {
    width: 1000px;
    margin: 50px auto;
    text-align: center;
}

10.宽高比

如果想让盒子容器有一定的宽高比,如视频播放器尺寸,可以用几种方法来实现,其中有一种方法最直观。可以使用 calc 函数设置顶部填充 (height * width) / 100%。

<div class="container">
    <div class="box"></div>
</div>

.container {
    width: 720px;
}
.box {
    padding-top: calc((9 / 16) * 100%);
    background: #efefef;
}

// 还可以使用 after 伪元素来创建比例大小。
.box::after {
    content: "";
    display: block;
    padding-top: calc((9 / 16) * 100%);
    background: #eee;
}
// 上面的方案会导致里面所有的元素都必须向上移动或需要使用绝对定位。不过好消息是,CSS增加了aspect-ratio属性。

aspect-ratio 为box容器规定了一个期待的纵横比,这个纵横比可以用来计算自动尺寸以及为其他布局函数服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值