如何在更改 <div> 块大小时实现垂直对齐
how to implement the vertical alignment when changing <div> block size
更改 <div>
块大小时如何实现垂直对齐(在我的示例中 - 绿色块)。
在我的示例中需要更改的地方是,当浏览器 window 调整大小时发生垂直对齐(中间)侧块。
vertical-align: middle
或 top : calc(50% - 25px)
属性不起作用。
示例:
http://jsfiddle.net/vsdu0cn8
我的情况和需要什么
(来源:imageup.ru)
代码:
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
font-size: 0px;
}
.menu-block {
max-width: calc(2 * 75px + 7 * (50px + 2 * 5px));
background-color: #ff8080;
}
.menu-block .menu-edge {
display: inline-block;
position: relative;
left: 0px;
width: 75px;
height: 50px;
vertical-align: top;
background-color: #80ff80;
}
.menu-block .menu-container {
display: inline-block;
width: calc(100% - 2 * 75px);
text-align: center;
background-color: #ff80ff;
}
.menu-block .menu-container .menu-element {
display: inline-block;
width: 50px;
height: 50px;
margin: 0px 5px;
font-size: 20px;
background-color: #ffff80;
}
</style>
</head>
<body>
<div class='menu-block'>
<div class='menu-edge'></div>
<div class='menu-container'>
<div class='menu-element'>#1</div>
<div class='menu-element'>#2</div>
<div class='menu-element'>#3</div>
<div class='menu-element'>#4</div>
<div class='menu-element'>#5</div>
<div class='menu-element'>#6</div>
<div class='menu-element'>#7</div>
</div>
<div class='menu-edge'></div>
</div>
</body>
</html>
通过使用 display:flex
设置容器,您可以使用 align-items: center
使文本垂直居中。
请查看更新后的 JSFiddle:
HTML:
<div class = 'menu-block'>
<div style="display:flex; align-items: center">
<div class = 'menu-edge'></div>
<div class = 'menu-container'>
<div class = 'menu-element'>#1</div>
<div class = 'menu-element'>#2</div>
<div class = 'menu-element'>#3</div>
<div class = 'menu-element'>#4</div>
<div class = 'menu-element'>#5</div>
<div class = 'menu-element'>#6</div>
<div class = 'menu-element'>#7</div>
</div>
<div class = 'menu-edge'></div>
</div>
</div>
更改 <div>
块大小时如何实现垂直对齐(在我的示例中 - 绿色块)。
在我的示例中需要更改的地方是,当浏览器 window 调整大小时发生垂直对齐(中间)侧块。
vertical-align: middle
或 top : calc(50% - 25px)
属性不起作用。
示例: http://jsfiddle.net/vsdu0cn8
我的情况和需要什么
(来源:imageup.ru)
代码:
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
font-size: 0px;
}
.menu-block {
max-width: calc(2 * 75px + 7 * (50px + 2 * 5px));
background-color: #ff8080;
}
.menu-block .menu-edge {
display: inline-block;
position: relative;
left: 0px;
width: 75px;
height: 50px;
vertical-align: top;
background-color: #80ff80;
}
.menu-block .menu-container {
display: inline-block;
width: calc(100% - 2 * 75px);
text-align: center;
background-color: #ff80ff;
}
.menu-block .menu-container .menu-element {
display: inline-block;
width: 50px;
height: 50px;
margin: 0px 5px;
font-size: 20px;
background-color: #ffff80;
}
</style>
</head>
<body>
<div class='menu-block'>
<div class='menu-edge'></div>
<div class='menu-container'>
<div class='menu-element'>#1</div>
<div class='menu-element'>#2</div>
<div class='menu-element'>#3</div>
<div class='menu-element'>#4</div>
<div class='menu-element'>#5</div>
<div class='menu-element'>#6</div>
<div class='menu-element'>#7</div>
</div>
<div class='menu-edge'></div>
</div>
</body>
</html>
通过使用 display:flex
设置容器,您可以使用 align-items: center
使文本垂直居中。
请查看更新后的 JSFiddle:
HTML:
<div class = 'menu-block'>
<div style="display:flex; align-items: center">
<div class = 'menu-edge'></div>
<div class = 'menu-container'>
<div class = 'menu-element'>#1</div>
<div class = 'menu-element'>#2</div>
<div class = 'menu-element'>#3</div>
<div class = 'menu-element'>#4</div>
<div class = 'menu-element'>#5</div>
<div class = 'menu-element'>#6</div>
<div class = 'menu-element'>#7</div>
</div>
<div class = 'menu-edge'></div>
</div>
</div>