我正在尝试将一个简单的div居中,但我失败了。我没有尝试任何方法,包括此处有关堆栈溢出的许多示例。这是我的CSS(的主要部分):
body {
min-height: 640px;
background: #282a36;
color: #bcc3cd;
font-size: 12px;
margin: 0;
font-family: 'Source Sans Pro', sans-serif;
}
#nickbox {
border: 1px solid white;
display: inline;
padding: 5px;
background-color: #ffffff00;
}
<div id="welcome">
<p tabindex="0" class="title">
Cards Against Oakbank
</p>
<p class="subtitle">A Cards Against Humanity clone.</p>
<div id="nickbox">
<label for="nickname">Nickname:</label>
<input type="text" id="nickname" value="" maxlength="20" role="textbox"
aria-label="Enter your nickname." data-lpignore="true" />
<input type="button" id="nicknameconfirm" value="Set" />
<span id="nickbox_error" class="error"></span>
</div>
</div>
由于我的想法已经用尽,因此目前没有尝试将焦点放在其中。我应该使用什么?我只希望#nickbox
在每个屏幕上水平居中。我并不真的在乎支持较旧的浏览器,我关心的是不同的分辨率。谢谢。
答案 0 :(得分:1)
对于布局,最好使用FlexBox。更好,.....灵活:)。它非常易于使用和理解。
例如,对父display:flex
使用#welcome
。与flex-direction:column
一起使用,因此子元素不在一行上,而是在另一行下。然后在您需要的元素上,使用align-self:center
将其居中在父容器中。
详细了解FlexBox
body {
min-height: 640px;
background: #282a36;
color: #bcc3cd;
font-size: 12px;
margin: 0;
font-family: 'Source Sans Pro', sans-serif;
}
#nickbox {
border: 1px solid white;
display: inline;
padding: 5px;
background-color: #ffffff00;
align-self:center;
}
#welcome {
display:flex;
flex-direction:column;
}
<div id="welcome">
<p tabindex="0" class="title">
Cards Against Oakbank
</p>
<p class="subtitle">A Cards Against Humanity clone.</p>
<div id="nickbox">
<label for="nickname">Nickname:</label>
<input type="text" id="nickname" value="" maxlength="20" role="textbox"
aria-label="Enter your nickname." data-lpignore="true" />
<input type="button" id="nicknameconfirm" value="Set" />
<span id="nickbox_error" class="error"></span>
</div>
</div>
OBS 通过flexbox 水平对齐项目,您可以在父级上使用justify-content
或在所需子级上使用justify-self
。要垂直对齐它们,请使用align
而不是justify
。在上面的示例中,由于align
会更改元素的默认方向,因此我使用flex-direction:column
来对齐水平。这就是align
和justfy
样式颠倒的原因
答案 1 :(得分:0)
当我要放置东西时,请始终使用flexbox https://css-tricks.com/snippets/css/a-guide-to-flexbox/
实际工作示例:https://jsfiddle.net/ty6zcsw9/
html:将ID为nickbox
的div包围为nickbox-container
的div
<div class='nickbox-container'>
<div id="nickbox">
<label for="nickname">Nickname:</label>
<input type="text" id="nickname" value="" maxlength="20" role="textbox" aria-label="Enter your nickname."
data-lpignore="true" />
<input type="button" id="nicknameconfirm" value="Set" />
<span id="nickbox_error" class="error"></span>
</div>
</div>
css:在您的CSS中添加以下内容
.nickbox-container{
display: flex;
justify-content: center;
}
答案 2 :(得分:0)
问题与以下代码行有关:
#nickbox {
...
display: inline; \
...
}
“内联”元素的行为类似于Text。 Stack Overflow上有关“居中” DIV的大多数解决方案都使用“块”显示。因此,这些解决方案对您不起作用。
但是还有希望!因为文本元素很容易以'text-align: center'
行居中。将此行添加到正文,它应该可以解决您的问题。
这应该可以解决您的问题。请参见以下JS小提琴:
http://jsfiddle.net/jcolicchio/kNB3c/
body {
min-height: 640px;
background: #282a36;
color: #bcc3cd;
font-size: 12px;
margin: 0;
font-family: 'Source Sans Pro', sans-serif;
text-align:center;
}
答案 3 :(得分:0)
您可以尝试
body {
min-height: 640px;
background: #282a36;
color: #bcc3cd;
font-size: 12px;
margin: 0;
font-family: 'Source Sans Pro', sans-serif;
}
#nickbox {
border: 1px solid white;
display: inline;
padding: 5px;
background-color: #ffffff00;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<div id="welcome">
<p tabindex="0" class="title">
Cards Against Oakbank
</p>
<p class="subtitle">A Cards Against Humanity clone.</p>
<div id="nickbox">
<label for="nickname">Nickname:</label>
<input type="text" id="nickname" value="" maxlength="20" role="textbox"
aria-label="Enter your nickname." data-lpignore="true" />
<input type="button" id="nicknameconfirm" value="Set" />
<span id="nickbox_error" class="error"></span>
</div>
</div>
答案 4 :(得分:0)
您好吗?http://react-spring.surge.sh/perf#interpolation可以检查,您可以调整垂直方向以将.nickcontainer
的垂直高度设置为适当的高度
<div id="welcome">
<p tabindex="0" class="title">
Cards Against Oakbank
</p>
<p class="subtitle">A Cards Against Humanity clone.</p>
<div class="nickcontainer">
<div id="nickbox">
<p class="filed">
<label for="nickname">Nickname:</label>
<input type="text" id="nickname" value="" maxlength="20" role="textbox"
aria-label="Enter your nickname." data-lpignore="true" />
<input type="button" id="nicknameconfirm" value="Set" />
<span id="nickbox_error" class="error"></span>
</p>
</div>
</div>
</div>
css
body {
background: #282a36;
color: #bcc3cd;
font-size: 12px;
margin: 0;
font-family: 'Source Sans Pro', sans-serif;
}
#nickbox {
padding: 5px;
background-color: #ffffff00;
display: table-cell;
vertical-align: middle;
}
.nickcontainer{
display: table;
height: 82vh;}
p.filed{
border:solid 1px #fff;
display:block;
padding:5px;
}
答案 5 :(得分:0)
有很多方法可以解决您的小问题。
display:inline
中的#nickbox
更改为display:block
并设置text-align:center
。 div中的所有元素将自动流向中心。 width
中的#nickbox
并设置margin:0 auto
。#nickbox
设置为display: flex
justify-content: center
。