html div内容纵向对齐,html - 如何垂直对齐到具有定义宽度/高度的div内容的中心?...

本文介绍了四种不同的CSS技术方案,帮助开发者实现元素在其父容器内的垂直和水平居中。这些方案包括使用display:table-cell、浮动结合display:table-cell、绝对定位等方法。

我对此进行了一些研究,从我发现你有四个选择:

版本1:父div与显示为表格单元格

如果您不介意在父div上使用display:table-cell,则可以使用以下选项:

.area{

height: 100px;

width: 100px;

background: red;

margin:10px;

text-align: center;

display:table-cell;

vertical-align:middle;

}​

现场演示

版本2:具有显示块和内容显示表格单元的父div

.area{

height: 100px;

width: 100px;

background: red;

margin:10px;

text-align: center;

display:block;

}

.content {

height: 100px;

width: 100px;

display:table-cell;

vertical-align:middle;

}​

现场演示

版本3:父div浮动和内容div作为显示表单元格

.area{

background: red;

margin:10px;

text-align: center;

display:block;

float: left;

}

.content {

display:table-cell;

vertical-align:middle;

height: 100px;

width: 100px;

}​

现场演示

版本4:父级div位置相对于内容位置绝对

我对这个版本唯一的问题是,你似乎必须为每个特定的实现创建css。 这样做的原因是内容div需要具有文本将填充的设置高度,并且边缘顶部将被计算出来。 这个问题可以在演示中看到。 您可以通过更改内容div的高度%并将其乘以-.5来获得您的margin-top值,从而手动使其适用于每个场景。

.area{

position:relative;

display:block;

height:100px;

width:100px;

border:1px solid black;

background:red;

margin:10px;

}

.content {

position:absolute;

top:50%;

height:50%;

width:100px;

margin-top:-25%;

text-align:center;

}​

现场演示

<div class="horizontal-scroll"> <!-- 表单表格 --> <div class="table-container"> <div class="process-table"> <div class="table-header"> <div class="col">工序名称</div> <div class="col">英语名称</div> <div class="col">流程卡内容</div> <div class="col">工艺等待时间(h)</div> <div class="col">机器运行时间(H)</div> <div class="col">set_up时间</div> <div class="col">人工时间</div> <div class="col">单位</div> <div class="col">数量</div> <div class="col">router状况</div> <div class="col">工序代码</div> <div class="col">操作</div> </div> <div class="table-body"> <div v-for="(item, index) in formList" :key="index" class="table-row"> <!-- 名称 --> <div class="col"> <el-form-item> <el-input v-model="item.routerName" placeholder="工序名称" /> </el-form-item> </div> <!-- 英语名称 --> <div class="col"> <el-form-item > <el-input v-model="item.englishName" placeholder="English Name" /> </el-form-item> </div> <!-- 流程卡内容 --> <div class="col"> <el-form-item > <el-input v-model="item.routercont" type="textarea" :autosize="{ minRows: 1, maxRows: 3}" class="scrollable-textarea" /> </el-form-item> </div> <!-- 时间参数组 --> <div class="col"> <el-form-item> <el-input v-model="item.processWatitime" /> </el-form-item> </div> <!-- 运行(H) --> <div class="col"> <el-form-item> <el-input v-model="item.machineRuntime" /> </el-form-item> </div> <!-- set_up --> <div class="col"> <el-form-item> <el-input v-model="item.setuptime" placeholder="min/pcs" /> </el-form-item> </div> <!-- 人工 --> <div class="col"> <el-form-item> <el-input v-model="item.labortime" placeholder="min/pcs" /> </el-form-item> </div> <!-- 单位 --> <div class="col"> <el-form-item> <el-input v-model="item.routerUnit" /> </el-form-item> </div> <!-- 数量 --> <div class="col"> <el-form-item> <el-input v-model="item.quantity" /> </el-form-item> </div> <!-- 状况 --> <div class="col"> <el-form-item> <el-select v-model="item.routerStatus" placeholder="状态"> <el-option v-for="dict in dict.type.router_status" :key="dict.value" :label="dict.label" :value="dict.value" /> </el-select> </el-form-item> </div> <!-- 代码 --> <div class="col"> <el-form-item> <el-input v-model="item.processCode" /> </el-form-item> </div> <!-- 操作 --> <div class="col"> <el-button type="danger" icon="el-icon-delete" circle @click="removeProcess(index)" /> </div> </div> </div> </div> </div> </div> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">确 定</el-button> <el-button @click="cancel">取 消</el-button> </div> </el-dialog> </div>整体修改为flex布局,表头和内容对齐,表头和内容横向滚动是一起的,内容部分可以纵向滚动
最新发布
09-29
### 实现Div元素水平垂直居中 为了使`<div>`元素在页面上既水平又垂直居中,可以采用多种方法。这里介绍几种常见的方式。 #### 使用Flexbox布局实现居中 现代网页设计中最推荐的做法之一是利用CSS的弹性盒子模型(Flexbox),这种方式不仅简洁而且兼容性良好: ```css .parent { display: flex; justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ min-height: 100vh; /* 设置最小高度为视口高度 */ } .child { width: 50%; height: 50%; background-color: lightblue; } ``` 此段代码通过设置父容器`.parent`为flex显示模式,并应用`justify-content:center`来达到子元素`.child`沿主轴方向(默认横向)上的居中效果;而`align-items:center`则负责交叉轴方向(即纵向)上的居中[^3]。 #### 利用绝对定位加转换(transform) 对于不支持最新标准的老浏览器环境,则可以通过给定位置配合变换函数的方式来完成相同的效果: ```css .container { position: relative; min-height: 100vh; } .content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: fit-content; padding: 20px; background-color: white; box-shadow: 0 0 10px rgba(0, 0, 0, .1); } ``` 这种方法首先将目标元素相对其最近已定位祖先(`position:relative`)偏移至屏幕中央点附近,之后借助`transform:translate()`调整实际坐标使其精确位于中心位置[^2]。 #### 行内块级元素技巧(line-height) 当只需要让单行文本或较小尺寸的内容居中时,还可以考虑使用line-height属性结合固定大小的容器来进行简单快速的操作: ```css .centered-text { line-height: 200px; /* 和容器height一致 */ text-align: center; /* 文字水平居中 */ height: 200px; border: 1px solid #ccc; } ``` 不过需要注意的是这种做法仅适用于特定场景下的小型组件,因为它依赖于预设的高度值,在响应式设计里可能会遇到局限性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值