Answers:
设置text-align:center;
为父div和margin:auto;
子div。
#parent {
text-align:center;
background-color:blue;
height:400px;
width:600px;
}
.block {
height:100px;
width:200px;
text-align:left;
}
.center {
margin:auto;
background-color:green;
}
.left {
margin:auto auto auto 0;
background-color:red;
}
.right {
margin:auto 0 auto auto;
background-color:yellow;
}
<div id="parent">
<div id="child1" class="block center">
a block to align center and with text aligned left
</div>
<div id="child2" class="block left">
a block to align left and with text aligned left
</div>
<div id="child3" class="block right">
a block to align right and with text aligned left
</div>
</div>
这是集中所有内容的好资源。
http://howtocenterincss.com/
text-align
似乎不适用于某个<i>
元素。给它上一堂课..
display: table-cell
或flexbox
为此。看看我添加的链接。
实际上,使用CSS3 flex box非常简单。
.flex-container{
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6, BB7 */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Safari 6.1+. iOS 7.1+, BB10 */
display: flex; /* NEW, Spec - Firefox, Chrome, Opera */
justify-content: center;
align-items: center;
width: 400px;
height: 200px;
background-color: #3498db;
}
.inner-element{
width: 100px;
height: 100px;
background-color: #f1c40f;
}
<div class="flex-container">
<div class="inner-element"></div>
</div>
撰写此答案时,似乎没有阅读OP编辑。上面的代码将所有内部元素居中(它们之间没有重叠),但是OP只希望将特定元素居中,而不是其他内部元素。因此,@Warface回答第二种方法更合适,但是它仍然需要垂直居中:
.flex-container{
position: relative;
/* Other styling stuff */
width: 400px;
height: 200px;
background-color: #3498db;
}
.inner-element{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
/* or 3d alternative if you will add animations (smoother transitions) */
transform: translate3d(-50%,-50%,0);
/* Other styling stuff */
width: 100px;
height: 100px;
background-color: #f1c40f;
}
<div class="flex-container">
<p>Other inner elements like this follows the normal flow.</p>
<div class="inner-element"></div>
</div>
的CSS
body{
text-align:center;
}
.divWrapper{
width:960px //Change it the to width of the parent you want
margin: 0 auto;
text-align:left;
}
的HTML
<div class="divWrapper">Tada!!</div>
这应该将div居中
2016-HTML5 + CSS3方法
的CSS
div#relative{
position:relative;
}
div#thisDiv{
position:absolute;
left:50%;
transform: translateX(-50%);
-webkit-transform: translateX(-50%);
}
的HTML
<div id="relative">
<div id="thisDiv">Bla bla bla</div>
</div>
小提琴
text-align:center;
在父div上应该可以解决问题
仅使特定孩子居中:
.parent {
height: 100px;
background-color: gray;
position: relative;
}
.child {
background-color: white;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 20px;
height:20px;
margin: auto;
}
<div class="parent">
<span class="child">hi</span>
</div>
或者,您也可以使用flex,但这会使所有子项居中
.parent {
height: 100px;
background-color: gray;
display: flex;
justify-content: center;
align-items: center;
}
.child {
background-color: white;
}
<div class="parent">
<span class="child">hi</span>
</div>
您可以像这样使用bootstrap flex类名:
<div class="d-flex justify-content-center">
// the elements you want to center
</div>
即使其中包含许多元素,这也将起作用。
div是固定宽度还是流体宽度?无论哪种方式,对于流体宽度,您都可以使用:
#element { /* this is the child div */
margin-left:auto;
margin-right:auto;
/* Add remaining styling here */
}
或者,您可以将父div设置为text-align:center;
,子div设置为text-align:left;
。
left:50%;
当div设置为时,仅根据整个页面居中position:absolute;
。如果您将div设置为left:50%;
它,则应相对于父div的宽度进行设置。对于固定宽度,请执行以下操作:
#parent {
width:500px;
}
#child {
left:50%;
margin-left:-100px;
width:200px;
}
首先,您可以使用left:50%使其相对于父div居中,但是为此您需要学习CSS定位。
许多人可能采取的一种解决方案是做类似的事情
div.parent { text-align:center; } //will center align every thing in this div as well as in the children element
div.parent div { text-align:left;} //to restore so every thing would start from left
如果将要居中的div相对放置,则可以
.mydiv { position:relative; margin:0 auto; }
text-align:center;
如果子元素是内联的(例如,不是a div
,table
等等),我会将其包装在a div
或a内p
,并使包装器的文本将css属性对齐为center。
<div id="container">
This text is aligned to the left.<br>
So is this text.<br>
<div style="text-align: center">
This <button>button</button> is centered.
</div>
This text is still aligned left.
</div>
否则,如果该元素是具有固定宽度的块(display: block
例如a div
或a p
),则将其左边距和右边距css属性设置为auto。
<div id="container">
This text is aligned to the left.<br>
So is this text.<br>
<div style="margin: 0 auto; width: 200px; background: red; color: white;">
My parent is centered.
</div>
This text is still aligned left.
</div>
您当然text-align: center
可以在wrapper元素中添加一个使其内容居中。
我不会打扰定位,因为恕我直言,这不是解决OP问题的方法,但请务必检查一下此链接,非常有帮助。
我找到了另一种解决方案
<style type="text/css">
.container {
width:600px; //set how much you want
overflow: hidden;
position: relative;
}
.containerSecond{
position: absolute;
top:0px;
left:-500%;
width:1100%;
}
.content{
width: 800px; //your content size
margin:0 auto;
}
</style>
并且在身体上
<div class="container">
<div class="containerSecond">
<div class="content"></div>
</div>
</div>
每当容器变大或变小时,这将使内容div居中。在这种情况下,您的内容应该大于容器的1100%以不居中,但是在这种情况下,您可以使containerSecond更大,这样就可以了
例如,我在主要内容div内有一个文章div。在文章内有一个图像,该图像下方是一个按钮,其样式如下:
.article {
width: whatever;
text-align: center;
float: whatever (in case you got more articles in a row);
margin: give it whatever margin you want;
} .article {
}
/ *在文章中,我希望图像居中* /
.article img {
float: none;
margin: 0 auto;
padding: give it a padded ridge if you want;
}
/ *现在,在同一article元素中的该图像下,应该有一个类似于read more的按钮。当然,在响应式设计中,您需要使用em或%* /
.button {
background: #whatever color:
padding: 4.3567%; /*Instead of fixed width*/
text-align: cente;
font: whatever;
max-width: 41.4166%;
float: none;
margin: 0 auto; /* You could make the zero into any margin you want on the top and bottom of this button.. Just notice the float: none property.. this wil solve most your issues, also check if maybe position and displaay might mess up your code..*/
}
祝好运
如果要在div中将元素居中并且不关心分区大小,可以使用Flex功能。我更喜欢使用flex并且不为元素使用确切的大小。
<div class="outer flex">
<div class="inner">
This is the inner Content
</div>
</div>
如您所见,Outer div是Flex容器,Inner必须是指定了Flex的项,flex: 1 1 auto;
以便更好地理解,您可以看到此简单示例。http://jsfiddle.net/QMaster/hC223/
希望能有所帮助。
我想要魔术。
html, body {
height: 100%;
}
.flex-container{
display: -ms-flexbox;
display: -webkit-box;
display: flex;
-ms-flex-align: center;
-ms-flex-pack: center;
-webkit-box-align: center;
align-items: center;
-webkit-box-pack: center;
justify-content: center;
}
<div class="flex-container">
<div>Content</div>
</div>
<html>
<head>
</head>
<style>
.out{
width:200px;
height:200px;
background-color:yellow;
}
.in{
width:100px;
height:100px;
background-color:green;
margin-top:50%;
margin-left:50%;
transform:translate(-50%,50%);
}
</style>
<body>
<div class="out">
<div class="in">
</div>
</div>
</body>
</html>