html - 如何制作内容居中的可点击响应方块?
问题描述
我有一组列,每列都包含一个方形框,填充到列宽并保持方形高度比。
整个框必须是可点击的,里面的内容也在框内居中。我想不出一种方法来让内部<a>
元素填充父 div 内的空间并让自己的内容居中。
整个方块应该是红色的,完全可以点击,并且中间有一个下载按钮。
我已经查看了一堆关于使用 CSS 制作方形框的类似问题,但没有发现任何关于像这样填充框的内部元素。
谢谢
.block {
width: 100%;
height: 0;
padding-bottom: 100%;
border: 2px solid #600;
}
.block a {
display: flex;
justify-content: center;
align-items: center;
background: #C00;
text-decoration: none;
}
.block span {
padding: 1em;
border: 2px solid #FFF;
text-align: center;
color: #FFF;
}
/* Demo only */
.row {
display: flex;
justify-content: space-between;
}
.column {
width: 20%;
}
<div class="row">
<div class="column">
<div class="block">
<a href="#">
<span>Download</span>
</a>
</div>
</div>
<div class="column">
<div class="block">
<a href="#">
<span>Download</span>
</a>
</div>
</div>
<div class="column">
<div class="block">
<a href="#">
<span>Download</span>
</a>
</div>
</div>
<div class="column">
<div class="block">
<a href="#">
<span>Download</span>
</a>
</div>
</div>
</div>
解决方案
将父级设置.block
为position: relative
允许我们设置.block > a
为position: absolute
,其尺寸填充其父级;我只添加了 3 个 css 规则,它们被注释了,所以你知道哪些:
.block {
position: relative; /* change #1 */
width: 100%;
height: 0;
padding-bottom: 100%;
border: 2px solid #600;
}
.block a {
position: absolute; /* change #2 */
left: 0; right: 0; top: 0; bottom: 0; /* change #3 */
display: flex;
justify-content: center;
align-items: center;
background: #C00;
text-decoration: none;
}
.block span {
padding: 1em;
border: 2px solid #FFF;
text-align: center;
color: #FFF;
}
/* Demo only */
.row {
display: flex;
justify-content: space-between;
}
.column {
width: 20%;
}
<div class="row">
<div class="column">
<div class="block">
<a href="#">
<span>Download</span>
</a>
</div>
</div>
<div class="column">
<div class="block">
<a href="#">
<span>Download</span>
</a>
</div>
</div>
<div class="column">
<div class="block">
<a href="#">
<span>Download</span>
</a>
</div>
</div>
<div class="column">
<div class="block">
<a href="#">
<span>Download</span>
</a>
</div>
</div>
</div>
推荐阅读
- javascript - 从 Thymeleaf 到 JavaScript 的布尔值问题
- spring-cloud - 使用 Feign、Ribbon 和 Eureka 管理容错
- database - Postgres 升级版
- robotframework - 机器人框架 - 在不遵守交货时间的情况下执行的关键字
- typescript - Typescript If语句具有多个值匹配同一变量
- loops - 在 vue.js 中推送和拼接不更新或删除
- r - pptx中带有lapply的flextable无法输出表格
- r - Shiny - 一个一个地加载页面元素
- java - Azure 应用服务 - Spring Boot - Hikari 错误
- python - Ubuntu EC2 上的 Selenium 错误:“过时的元素参考:元素未附加到页面文档”