Div 在添加 HREF 时不对齐
Div's moving out of alignment when HREF added
我有一排三张图片,它们应该居中对齐,因此与下方相应的 div 对齐。每张图片都有自己的 Div。它们完美对齐,但是,当我向它们添加 HREF 时,它们都向左移动,我不明白为什么。有人可以阐明如何解决这个问题吗?
JSfiddle:https://jsfiddle.net/DcoltGaming/ap2jd1xh/7/
HTML:
<div class="contactUsContainer">
<a href="">
<div class="ContactUsBox">
<img src="https://img.icons8.com/plasticine/48/000000/phone.png">
</div>
</a>
<a href="">
<div class="emailIconBox">
<img src="https://img.icons8.com/nolan/48/email.png">
</div>
</a>
<a href="">
<div class="IMBox">
<img src="https://img.icons8.com/android/48/000000/computer.png">
</div>
</a>
</div>
<div class="contactUsMethodInfoContainer">
<div class="phoneInfo">
<p>Some info about a phone.</p>
</div>
<div class="IMInfo">
<p>Some info about Social media</p>
</div>
<div class="emailInfo">
<p>Some info about emails.</p>
</div>
</div>
CSS
.contactUsContainer{
display: flex;
align-items: center;
height: 100%;
}
.ContactUsBox{
width: 25%;
height: 100%;
margin: auto;
}
.emailIconBox{
width: 25%;
height: 100%;
margin: auto;
}
.IMBox {
width: 25%;
height: 100%;
margin: auto;
}
.contactUsMethodInfoContainer {
display: flex;
align-items: center;
height: 100%;
}
.phoneInfo{
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.IMInfo{
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.emailInfo{
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
你需要给标签 CSS 你给你的 ...Box 元素。
.contactUsContainer > a {
width: 25%;
height: 100%;
margin: auto;
}
或者给所有标签一个 class 并以此方式设置样式
<a class="linkBox" />
.linkBox {
width: 25%;
height: 100%;
margin: auto;
}
您的 contactUsContainer 设置为 flex,并且 flex 始终作用于其直接子项。在 a 标签之前,子标签是 ContactUsBox、emailIconBox 和 IMBox。添加 a 标签后,a 标签将成为直接子标签。要解决这个问题,您需要将所需的属性添加到 a 标签中:
.contactUsContainer {
display: flex;
align-items: center;
height: 100%;
}
a {
width: 25%;
height: 100%;
margin: auto;
}
.contactUsMethodInfoContainer {
display: flex;
align-items: center;
height: 100%;
}
.phoneInfo {
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.IMInfo {
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.emailInfo {
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
<div class="contactUsContainer">
<a href="">
<div class="ContactUsBox">
<img src="https://img.icons8.com/plasticine/48/000000/phone.png">
</div>
</a>
<a href="">
<div class="emailIconBox">
<img src="https://img.icons8.com/nolan/48/email.png">
</div>
</a>
<a href="">
<div class="IMBox">
<img src="https://img.icons8.com/android/48/000000/computer.png">
</div>
</a>
</div>
<div class="contactUsMethodInfoContainer">
<div class="phoneInfo">
<p>Some info about a phone.</p>
</div>
<div class="IMInfo">
<p>Some info about Social media</p>
</div>
<div class="emailInfo">
<p>Some info about emails.</p>
</div>
</div>
既然您使用的是 display: flex
,我是否可以建议您将 width
全部抛弃,而是依靠 flexbox 属性来处理您的布局?
只需添加 justify-content: space-around;
即可获得您想要的效果:
https://jsfiddle.net/cu5k70e4/
CSS(宽度在 children 上删除,justify-content
应用于 parents):
.contactUsContainer{
display: flex;
align-items: center;
justify-content: space-around;
height: 100%;
}
.ContactUsBox{
height: 100%;
margin: auto;
}
.emailIconBox{
height: 100%;
margin: auto;
}
.IMBox {
height: 100%;
margin: auto;
}
.contactUsMethodInfoContainer {
display: flex;
justify-content: space-around;
align-items: center;
height: 100%;
}
.phoneInfo{
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.IMInfo{
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.emailInfo{
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
我有一排三张图片,它们应该居中对齐,因此与下方相应的 div 对齐。每张图片都有自己的 Div。它们完美对齐,但是,当我向它们添加 HREF 时,它们都向左移动,我不明白为什么。有人可以阐明如何解决这个问题吗?
JSfiddle:https://jsfiddle.net/DcoltGaming/ap2jd1xh/7/
HTML:
<div class="contactUsContainer">
<a href="">
<div class="ContactUsBox">
<img src="https://img.icons8.com/plasticine/48/000000/phone.png">
</div>
</a>
<a href="">
<div class="emailIconBox">
<img src="https://img.icons8.com/nolan/48/email.png">
</div>
</a>
<a href="">
<div class="IMBox">
<img src="https://img.icons8.com/android/48/000000/computer.png">
</div>
</a>
</div>
<div class="contactUsMethodInfoContainer">
<div class="phoneInfo">
<p>Some info about a phone.</p>
</div>
<div class="IMInfo">
<p>Some info about Social media</p>
</div>
<div class="emailInfo">
<p>Some info about emails.</p>
</div>
</div>
CSS
.contactUsContainer{
display: flex;
align-items: center;
height: 100%;
}
.ContactUsBox{
width: 25%;
height: 100%;
margin: auto;
}
.emailIconBox{
width: 25%;
height: 100%;
margin: auto;
}
.IMBox {
width: 25%;
height: 100%;
margin: auto;
}
.contactUsMethodInfoContainer {
display: flex;
align-items: center;
height: 100%;
}
.phoneInfo{
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.IMInfo{
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.emailInfo{
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
你需要给标签 CSS 你给你的 ...Box 元素。
.contactUsContainer > a {
width: 25%;
height: 100%;
margin: auto;
}
或者给所有标签一个 class 并以此方式设置样式
<a class="linkBox" />
.linkBox {
width: 25%;
height: 100%;
margin: auto;
}
您的 contactUsContainer 设置为 flex,并且 flex 始终作用于其直接子项。在 a 标签之前,子标签是 ContactUsBox、emailIconBox 和 IMBox。添加 a 标签后,a 标签将成为直接子标签。要解决这个问题,您需要将所需的属性添加到 a 标签中:
.contactUsContainer {
display: flex;
align-items: center;
height: 100%;
}
a {
width: 25%;
height: 100%;
margin: auto;
}
.contactUsMethodInfoContainer {
display: flex;
align-items: center;
height: 100%;
}
.phoneInfo {
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.IMInfo {
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.emailInfo {
width: 25%;
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
<div class="contactUsContainer">
<a href="">
<div class="ContactUsBox">
<img src="https://img.icons8.com/plasticine/48/000000/phone.png">
</div>
</a>
<a href="">
<div class="emailIconBox">
<img src="https://img.icons8.com/nolan/48/email.png">
</div>
</a>
<a href="">
<div class="IMBox">
<img src="https://img.icons8.com/android/48/000000/computer.png">
</div>
</a>
</div>
<div class="contactUsMethodInfoContainer">
<div class="phoneInfo">
<p>Some info about a phone.</p>
</div>
<div class="IMInfo">
<p>Some info about Social media</p>
</div>
<div class="emailInfo">
<p>Some info about emails.</p>
</div>
</div>
既然您使用的是 display: flex
,我是否可以建议您将 width
全部抛弃,而是依靠 flexbox 属性来处理您的布局?
只需添加 justify-content: space-around;
即可获得您想要的效果:
https://jsfiddle.net/cu5k70e4/
CSS(宽度在 children 上删除,justify-content
应用于 parents):
.contactUsContainer{
display: flex;
align-items: center;
justify-content: space-around;
height: 100%;
}
.ContactUsBox{
height: 100%;
margin: auto;
}
.emailIconBox{
height: 100%;
margin: auto;
}
.IMBox {
height: 100%;
margin: auto;
}
.contactUsMethodInfoContainer {
display: flex;
justify-content: space-around;
align-items: center;
height: 100%;
}
.phoneInfo{
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.IMInfo{
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}
.emailInfo{
height: 100%;
margin: auto;
text-align: center;
padding-top: 1.5%;
}