请教一个移动端 css 的样式问题
像这样子 375px 的布局,黑色是菜单 100px,然后天蓝色是两边的等距 20px,剩下中间就是 235px 了,有一些 70px 的分类,一行放三个,中间黑色箭头的距离 25px 该怎么等分呢,一三俩个贴边,二居中?会有动态加载即肯定不止一行的情况,求大佬指点!
谢谢大佬们解答。对于动态加载的 flex 布局,如果第二行只有两条的话,就会两端对齐了,然后就需要手动去 js 里面操作把这个 list 加一项,让第二行补充为三个才会样式正常。但是现在我想问的是有没有只从单纯的 css 来实现,不要出现 .5px 的情况,移动端。。。 感谢大家的解答,10L 和 12L 是我所需要的,再次感谢! 看到 grid 布局的这么多,平时我用的少所以想问一下,这里想要的是在 20padding 的基础上两端对齐,然后一三需要贴合 padding,二居中,那不是还需要选择器来判断一三 text-align:left or right,二:text-align: center 吗?这样的话和 10L 大佬的方法在最后一个去算 margin-right 我觉得好像都差不多,而且对于 grid 在移动端的坑其实我也不太懂,平时主要还是 flex 用得多。 ----------------------- 以下是精选回复-----------------------
答:display flex
justify-content space-between
答:问后端的话就是 flex 一把梭
答:flex 布局完事,父容器设置 justify-content 为 space-between 或 space-around
答:flex 吧,最好的布局方式
答:<div class="main">
<div class="main-left"></div>
<div class="main-right">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
</div>
.main {
display: flex;
}
.main-left {
width: 100px;
}
.main-right {
flex: 1;
padding: 0 20px;
display: flex;
align-items: center;
justify-content: space-between;
}
答:.box {
width: 70px;
}
答:flex 随便搞
答:基本都 flex
答:最后一行问题,搭配 nth-child:last-child 就好了
例如你现在的是 70px:
.item:nth-child(3n-1):last-child {
margin-right: calc(100% - 140px - (100% - 210px) / 2)
}
答:为什么剩下 235px 不是 335 ?
答:多行不确定项时,不要使用 justify-content: space-between; 直接默认 flex-start,宽度取百分比,对中间元素取 margin.用
div {
width: 30%;
}
div:nth-child(3n+2) {
margin: 0 5%;
}
答:打扰了
答:最后一行问题可以使用 ::after 伪元素选择器可以解决吧
答:
答:10L 和 12L 方法都可行,12L 可能写起来更简单一点,无需计算。 但是 使用 flex 的时候,注意要设置 box-sizing: border-box;
答:margin-left: 12.5px
答:10L 的挺好
答:最简单的办法
div{
width: 32%;
}
div:not(:first-child){
margin-left: 2%;
}
答:我一般是用六楼的方法。
10l 12l 的学到了
答:2200 年了,不如直接 grid,只要设 column-gap 就好了
答:<body>
<div class="main">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
<div class="box">5</div>
<div class="box">6</div>
<div class="box">7</div>
<div class="box">8</div>
</div>
</body>
.main
display flex
width 235px
height 500px
flex-wrap wrap
border 1px solid black
.box
width 70px
height 70px
margin-right 12.5px
&:nth-of-type(3n)
margin-right 0
答:这样?
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
html,body {
height: 100%;
}
.side-bar {
float: left;
width: 100px;
height: 100%;
background: #000;
}
.list {
box-sizing: border-box;
margin-left: 100px;
padding-left: 20px;
padding-right: 20px;
overflow: hidden;
}
.item-wrap {
float: left;
width: calc(100% / 3);
text-align: center;
}
.item {
display: inline-block;
width: 70px;
height: 70px;
background: red;
}
</style>
</head>
<body>
<div class="side-bar"></div>
<div class="list">
<div class="item-wrap">
<div class="item"></div>
</div>
<div class="item-wrap">
<div class="item"></div>
</div>
<div class="item-wrap">
<div class="item"></div>
</div>
<div class="item-wrap">
<div class="item"></div>
</div>
</div>
</body>
</html>
答:这篇博客不错
[让 CSS flex 布局最后一行列表左对齐的 N 种方法]( https://www.zhangxinxu.com/study/201908/flex-last-align-demo.php)
答:用 nth 选择器就行,你去百度下这玩意的用法,这种布局分分钟随便写。。。。
答:直接用 flex 布局啊~~~
答:flex 应该搞不定这事,最后一行只有 1 个或 2 个的话会布局有问题,直接用 grid 会好一些
答:flex 解决不了,楼上说的 margin 有时候还是会存在有 bug。
最终的解决办法是 grid
答:用 grid 啊。。。
答:咋不用 12 栅格布局
答:需求是多行两端对齐尾行左对齐,grid 的 repeat +++1
答:如果不用 flex 的话,传统方法 grid 布局的思想
容器左右两端给一个负的 margin,然后每一个块的宽度是 100%/个数,每一个有一个 padding,左右正好是容器的负 margin,这样就正好左右两个贴边,中间的均匀分布了
答:item inline-block,nth-child( 3n-1),设置每行中间那个 item margin:0 12.5px;即可
0条评论