各位好,我在用 grid 做一个页面的布局,请看代码
<div class="fruit-grid"> <div class="fruit">hello1</div> <div class="fruit">hello2</div> <div class="fruit">hello3</div> <div class="fruit">hello4</div> <div class="fruit">hello5</div> <div class="fruit">hello6</div> <div class="fruit">hello7</div></div>
我想实现的是一共分三列,最左边的一列是 hello1 和 hello2;中间是 3,4,5;最右侧是 6 和 7。 css 部分代码如下
.fruit-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; align-items: start;}.fruit { width: 100%; margin-bottom: 10px;}/* 显示在最左 */.fruit:nth-child(1),.fruit:nth-child(2) { grid-column: 1;}/* 显示在中间 */.fruit:nth-child(3),.fruit:nth-child(4),.fruit:nth-child(5) { grid-column: 2;}/* 显示在最右 */.fruit:nth-child(6),.fruit:nth-child(7) { grid-column: 3;}
现在遇到的问题是,中间和右侧的内容不顶部对齐,我想要的显示形式是
1 3 6
2 4 7
5
但实际的效果是
12 3 4 5 6 7
请问这个该怎么解决,谢谢。
如上问题所说,想知道错在哪里了
你这个描述前后有点矛盾啊
最左边的一列是 hello1 和 hello2;中间是 3,4,5;最右侧是 6 和 7
现在遇到的问题是,中间和右侧的内容不顶部对齐,我想要的显示形式是1 3 62 4 75
不应该是
1 3 62 4 7 5
在.fruit-grid
上添加grid-auto-flow: dense
就可以了,它会使元素尽可能的使用前面空的网格,而不是产生新的。
<div class="parent"> <div class="div1">1</div> <div class="div2">2</div> <div class="div3">\3</div> <div class="div4">4</div> <div class="div5">5</div> <div class="div6">6</div> <div class="div7">7</div> </div>
.parent { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); grid-column-gap: 0px; grid-row-gap: 0px;}.div1 { grid-area: 1 / 1 / 2 / 2;}.div2 { grid-area: 2 / 1 / 3 / 2;}.div3 { grid-area: 1 / 2 / 2 / 3;}.div4 { grid-area: 2 / 2 / 3 / 3;}.div5 { grid-area: 3 / 1 / 4 / 2;}.div6 { grid-area: 1 / 3 / 2 / 4;}.div7 { grid-area: 2 / 3 / 3 / 4;}
你的问题出在对齐项的理解上。你想要的布局是一个列从左到右排列,然后下一列从上到下排列,再下一列也是从上到下排列。但是,你当前的 CSS 代码将所有的列都设置为从上到下排列。
要解决这个问题,你需要将每一列的子元素设置为不同的对齐方式。在 CSS Grid 中,可以使用 align-items
和 align-self
属性来控制对齐。
以下是修改后的 CSS 代码:
.fruit-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;}.fruit { width: 100%; margin-bottom: 10px;}/* 显示在最左 */.fruit:nth-child(1),.fruit:nth-child(2) { grid-column: 1; align-self: start; /* 控制这两列的对齐方式 */}/* 显示在中间 */.fruit:nth-child(3),.fruit:nth-child(4),.fruit:nth-child(5) { grid-column: 2; align-self: end; /* 控制这三列的对齐方式 */}/* 显示在最右 */.fruit:nth-child(6),.fruit:nth-child(7) { grid-column: 3; align-self: start; /* 控制这两列的对齐方式 */}
这样,每一列的子元素都会根据你指定的对齐方式进行排列,从而实现了你想要的布局效果。
要求是这样的(目前的话换行单选多选判断换行展示已经处理完了): 但是现在有个问题就是选项的个数问题,选项最多是9个(也就是从A~I),最少是3~4个(判断的选项就是两个,但是若遇到判断就换行了,倒是不用太操心),选项个数不固定每题的宽度就不固定,宽度不固定列数就不固定,列数有影响到了行数,但又要求每列得对齐。 大致就是: 1.选项个数不固定 2.支持横排、竖排的切换 3.每列得对齐 所以想问问各位
本文向大家介绍如何实现Flex布局?相关面试题,主要包含被问及如何实现Flex布局?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 文章链接: http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool(语法篇) 简单的分为容器属性和元素属性 容器的属性: flex-direction:决定主轴的方
本文向大家介绍flex布局如何实现?相关面试题,主要包含被问及flex布局如何实现?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: flex 是 Flexible Box 的缩写,意为"弹性布局"。指定容器display: flex即可。 容器有以下属性:flex-direction,flex-wrap,flex-flow,justify-content,align-items,align
本文向大家介绍一行JavaScript代码如何实现瀑布流布局,包括了一行JavaScript代码如何实现瀑布流布局的使用技巧和注意事项,需要的朋友参考一下 写在前面 一行 JavaScript 代码究竟可以完成什么布局?今天我们就来用一行 JavaScript 代码完成经典布局的一种,瀑布流布局。 所谓的瀑布流布局就是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动
Grid 宫格布局 平台差异说明 App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序 √ √ √ √ √ √ √ 基本使用 该组件外层为u-grid组件包裹,通过col设置内部宫格的列数 内部通过ugrid-item组件的slot设置宫格的内容 如果不需要宫格的边框,可以设置border为false <template> <u-grid :col="3"> <u-gr
Grid 与 Flex 布局有一定的相似性,但是功能更加强大,学习起来也有不少难度,不过相信下面的内容会帮你更快的掌握 Grid。 1. 官方定义 通过设置 display: grid; 可以定义一个 CSS 网格。然后使用 grid-template-rows 和 grid-template-columns 属性来定义网格的 columns 和 rows。 使用这些属性定义的网格被描述为 显式网