css-tick

栏目: CSS · 发布时间: 6年前

内容简介:记录一下最近学到的一些css的小技巧。媒体查询这里存在一个边界值的问题,如果max-width和下一个min-width数值相等,那么就需要在min-width里面写样式覆盖掉max-width里面的,不然就会出现边界值的样式不是我们想要的那样子。如所以,有一种做法就是让max-width和min-width相差1,但是经过测试,发现在电脑分辨率为'125%'下,会出现767px没有办法取到媒体查询的样式,具体原因我也不明白。

记录一下最近学到的一些css的小技巧。

媒体查询

媒体查询这里存在一个边界值的问题,如果max-width和下一个min-width数值相等,那么就需要在min-width里面写样式覆盖掉max-width里面的,不然就会出现边界值的样式不是我们想要的那样子。如

@media (max-width: 768px) {
    padding: 10px;
}
@media (min-width: 768px) and (max-width: 1280px) {
    padding: 0;// 如果这里不写,在768px就会默认是10px的padding
}

所以,有一种做法就是让max-width和min-width相差1,但是经过测试,发现在电脑分辨率为'125%'下,会出现767px没有办法取到媒体查询的样式,具体原因我也不明白。

@media (max-width: 767px) {
    padding: 10px;
}
@media (min-width: 768px) and (max-width: 1280px) {
    padding: 0;
}

参考了boostrap媒体出现的写法,用0.02间隔开,完美解决

@media (max-width: 767.98px) {
  }

  @media (min-width: 768px) and (max-width: 1280px)  {
  }

用css选择器给不同数量的子元素设置样式

有这样一个需求,要渲染一个列表,一行显示四个元素,如果小于四个,居中显示,如果大于四个,要右对齐显示。类似于这样子。

css-tick

css-tick

这里的难点就是需要通过css来判断有多少个元素,然后我使用了css选择器。

li:first-child:nth-last-child(3)// 总共只有三个元素,因为第一个元素就是倒数第三个元素
li:first-child:nth-last-child(n+3)//大于或等于三个元素,因为第一个元素在倒数第三个以及倒数第三个之后

如果要操作样式,可以这样写

li:first-child:nth-last-child(3),
li:first-child:nth-last-child(3)~ li {
}

再回到我的问题。我这里使用了flex布局,要它第一行居中显示,第二行如果有的话,要右对齐,可以对最后一个元素使用margin-right: auto。但是必须是大于四个的最后一个元素,如果只有一行就不需要右对齐啦。

直接贴代码

<style type="text/css">
        ul {
            display: flex;
            flex-wrap: wrap;
            margin: 0;
            padding: 0;
            list-style: none;
            justify-content: center; // 默认居中
        }

        li {
            flex-shrink: 0;
            flex-grow: 0;
            flex-basis: calc((100% - 20px * 3) / 4);
            background: yellow;
            margin-right: 20px;
            margin-top: 10px;
        }

        li:nth-child(4n) {
            margin-right: 0;
        }

        li:last-child:nth-child(n+5) { //大于四个元素,因为最后一个元素是第五个或者第五个元素之后的元素
            margin-right: auto; 
          }
    </style>
</head>
<body>
    <ul>
        <li>A</li>
        <li>B</li>
        <li>C</li>
        <li>A</li>
        <li>B</li>
        <li>C</li>
    </ul>
</body>

学习链接: https://css-tricks.com/solved...


以上所述就是小编给大家介绍的《css-tick》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

因计算机而强大

因计算机而强大

[美]西摩 佩珀特 Seymour Papert / 梁栋 / 新星出版社 / 2019-1 / 38

本书有两个中心主题—— 孩子可以轻松自如地学习使用计算机; 学习使用计算机能够改变他们学习其他知识的方式。 (前苹果公司总裁 约翰·斯卡利) 最有可能带来文化变革的就是计算机的不断普及。 计算机不仅是一个工具,它对我们的心智有着根本和深远的影响。 计算机不仅帮助我们学习 ,还帮助我们学习怎样学习。 计算机是一种调解人与人之间关系的移情对象。 一个数学的头脑......一起来看看 《因计算机而强大》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具