实际开发过程中会遇到一些需要用CSS小技巧处理的布局问题,现在分享几个个人工作中遇到的小问题和解决方案。

1.inline元素间的空白间隙

这里要介绍一个神器font-size:0
如果你写了个列表,因为元素节点有文本节点,在缩进代码时会占据宽度,比如:

<ul>
<li>我是第一项</li>
<li>我是第二项</li>
<li>我是第三项</li>
<li>我是第四项</li>
</ul>
复制代码

设置了CSS

<style>
ul {
list-style: none;
}
li {
width: 25%;
display: inline-block;
background: green;
text-align: center;
height: 40px;
line-height: 40px;
}
</style>
复制代码

就会发现

我们为了页面代码的整洁可读性,往往会设置一些适当的缩进、换行,但当元素的display为inline或者inline-block的时候,这些缩进、换行就会产生空白,所以出现上述问题。虽然还有其他方法能解决我们因为缩进、换行而产生的问题,但此时,最合适的方法就是给li的父级ul设置font-size: 0, 给li设置font-size: 16px,如此就达到了所需效果

图片间的间隙问题也是因为换行、缩进。

<div>
<img src="pic1.jpg">
<img src="pic2.jpg">
</div>
复制代码

如上,图片出现间隙后,在div设置font-size:0,间隙就会消失。

2.图片等比缩放

在做项目时遇到轮播图的图片从某服务器获取的情况,但图片大小比例却是不定的,这种情况该如何保证图片按比例显示?或者在移动端场景下,如何做图片的响应性布局?

在CSS3中,可使用background-size来解决针对响应性布局的背景图片自适应。

  • 浏览器支持的程度:IE9+, Firefox4+, opera, chrome, safari5+
  • 基本语法:background-size: length | percentage | cover | contain
  1. length该属性值是设置背景图像的宽度和高度的,第一个值是宽度,第二个值是设置高度的。如果只设置第一个值,那么第二个值会自动转换为 “auto”;调整图片到指定大小;
  2. percentage该属性是以父元素的百分比来设置图片的宽度和高度的,第一个值是宽度,第二个值是高度。如果只设置一个值,那么第二个值会被设置为 “auto”;调整图片到指定大小,百分比相对于包含元素的尺寸。
  3. cover把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。扩展图片来填满元素(保持像素的长宽比);
  4. contain把图像扩展至最大尺寸,以使宽度和高度完全适应内容区域。 缩小图片来适应元素的尺寸(保持像素的长宽比)

那究竟是怎么使用的呢?举个?

// html部分
<div class="bsize1"></div>
// CSS部分
.bsize1 {
position: relative;
width: 28%;
height: 0;
padding-bottom: 17.5%;
overflow: hidden;
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
border: 1px solid #e2e5e7 !important;
}
复制代码

3.文字折行

单行文本溢出

overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
复制代码

多行文本溢出

display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
复制代码

-webkit-line-clamp用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。常见结合属性:
display: -webkit-box;必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。

4.calc()

整体高度自适应布局怎么实现?在讲calc()之前先说一下vh和vw:

vw   相对于视口的宽度。视口被均分为100单位的vw
vh 相对于视口的高度。视口被均分为100单位的vh
vmax 相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax
vmin 相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin
复制代码
  • calc 是 css3提供的一个在css文件中计算值的函数:用于动态计算长度值。
  • 需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px);
  • 任何长度值都可以使用calc()函数进行计算;
  • calc()函数支持 "+", "-", "*", "/" 运算;
  • calc()函数使用标准的数学运算优先级规则;

注意!

如果用了CSS预处理器(LESS/SCSS)会被它们先解析,这时需要禁用解析calc(~ '100vh - 64px')

原文出自本人博客:常见CSS小技巧(一)

转载于:https://juejin.im/post/5b6ec02be51d451989059a28

最新文章

  1. 第一章 Part 2/2 Git 一览
  2. 关于webrtc视频会议的解决方案
  3. Selenium2学习-013-WebUI自动化实战实例-011-WebElement.getText()值为空问题探索及解决
  4. PHP的require()函数可以在一行代码中多次读取
  5. &lt; java.lang &gt;-- StringBuffer字符串缓冲区
  6. Jquery各版本下载,附Jquery官网下载方法
  7. Python闭包及装饰器
  8. 如何获取版本的 Internet 信息服务器 (IIS)
  9. [Android学习笔记]LayoutInflater的使用
  10. Web前端优化需要注意的点
  11. Blog开始
  12. js模拟点击事件实现代码
  13. JavaScript中push ,pop ,concat ,join方法
  14. 利用idea解决git代码冲突问题
  15. Luogu P5285 / LOJ3050 【[十二省联考2019]骗分过样例】
  16. MatrixBG 代码瀑布的实现
  17. windows平台下的oracle ORA-01031的解决方法
  18. upc组队赛1 不存在的泳池【GCD】
  19. Wordpress搭建
  20. 关于tensorboard启动问题

热门文章

  1. Vulnhub DC-3靶机渗透
  2. AntSword 中国蚁剑的下载安装配置(附下载文件)
  3. 【python】利用jieba中文分词进行词频统计
  4. Windows Server 2016 Storage Replication
  5. Keepalived实现Nginx负载均衡高可用
  6. ******Prometheus(二)***********
  7. 初识指令重排序,Java 中的锁
  8. 【Tool】Windows系统安装Maven依赖管理工具
  9. 新时代前端必备神器 Snapjs之弹动效果
  10. Salesforce学习 | 系统管理员Admin如何添加用户