창 중앙에 div
(with position:absolute;
) 요소 를 배치해야합니다 . 그러나 너비를 알 수 없기 때문에 그렇게하는 데 문제 가 있습니다.
나는 이것을 시도했다. 그러나 너비가 반응하기 때문에 조정해야합니다.
.center {
left: 50%;
bottom:5px;
}
어떤 아이디어?
창 중앙에 div
(with position:absolute;
) 요소 를 배치해야합니다 . 그러나 너비를 알 수 없기 때문에 그렇게하는 데 문제 가 있습니다.
나는 이것을 시도했다. 그러나 너비가 반응하기 때문에 조정해야합니다.
.center {
left: 50%;
bottom:5px;
}
어떤 아이디어?
답변:
<body>
<div style="position: absolute; left: 50%;">
<div style="position: relative; left: -50%; border: dotted red 1px;">
I am some centered shrink-to-fit content! <br />
tum te tum
</div>
</div>
</body>
position: fixed
있지만 오버레이의 높이를 알 수없는 경우 오버레이의 스크롤 막대를 구현해야합니다.
<html>
. 그러나 <html>
요소에 height
지정되어 있지 않으므로 문서의 모든 내용의 높이를 가져옵니다. 유일한 내용은 절대적으로 배치되므로 (내용 흐름에서 벗어남). 추가 height: 100%
받는 <html>
요소는이에 차이가 있습니다.
이것은 나를 위해 작동합니다 :
#content {
position: absolute;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
width: 100px; /* Need a specific value to work */
}
<body>
<div>
<div id="content">
I'm the content
</div>
</div>
</body>
width
이 기능을 사용하려면 특정 값으로 설정해야합니다. auto
및 100%
요소를 중심으로하지 않습니다. display: block;
필수이다. position: absolute;
필수는 아닙니다. 모든 값이 작동합니다. 부모 요소 position
가 아닌 다른 것으로 설정되어야합니다 static
. 설정 left
하고 right
하는 것은 0
불필요합니다. margin-left: auto; margin-right: auto;
일을 할 것입니다.
다음은 IE8 이하를 지원할 필요가없는 경우 반응 형 디자인 또는 알 수없는 크기 에 적합한 솔루션 입니다 .
.centered-axis-x {
position: absolute;
left: 50%;
transform: translate(-50%, 0);
}
단서는 변환이 요소의 너비 / 높이를 기준으로하는 left: 50%
반면 부모를 translate
기준으로합니다.
이렇게하면 자녀와 부모 모두에게 유연한 너비로 완벽하게 중심이 지정된 요소를 가질 수 있습니다. 보너스 : 자녀가 부모보다 더 큰 경우에도 효과가 있습니다.
또한 이것을 수직으로 가운데에 맞출 수 있습니다 (다시 말해 부모와 자식의 너비와 높이는 완전히 유연하거나 알 수 없음).
.centered-axis-xy {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
transform
공급 업체 접두사도 필요할 수 있습니다 . 예를 들어-webkit-transform: translate(-50%,-50%);
webkit-
내가 제안한 접두사로 시도하십시오 .
transform: translate
position: fixed
어린이 에게는 사용할 수없는 것 같습니다 . 이 경우 허용되는 답변이 더 효과적입니다.
정말 좋은 게시물. 누군가가 단일 div 태그로 원하는 경우 추가하고 싶었습니다.
로 복용 width
중 900px
입니다.
#styleName {
position: absolute;
left: 50%;
width: 900px;
margin-left: -450px;
}
이 경우 width
미리 알아야합니다 .
"because the width is unknown"
... 이것은 질문에 대답하지 않습니다
절대 센터
HTML :
<div class="parent">
<div class="child">
<!-- content -->
</div>
</div>
CSS :
.parent {
position: relative;
}
.child {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
}
데모 : http://jsbin.com/rexuk/2/
Chrome, Firefox 및 IE8에서 테스트
도움이 되었기를 바랍니다 :)
이 작업은 수직 및 수평
#myContent{
position: absolute;
left: 0;
right: 0;
top:0;
bottom:0;
margin: auto;
}
부모의 요소 중심을 만들고 싶다면 부모의 위치를 상대적으로 설정하십시오
#parentElement{
position:relative
}
편집하다:
수직 중심의 경우 설정된 높이를 요소에 맞 춥니 다. @Raul 덕분에
부모의 요소 중심을 만들려면 부모의 위치를 상대로 설정하십시오.
수평 및 수직 중심을 조정해야하는 경우 :
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
** 응답 솔루션 **
div의 요소를 가정하면 다른 div입니다 ...
이 솔루션은 잘 작동합니다
<div class="container">
<div class="center"></div>
</div>
용기는 임의의 크기 일 수있다 (상대 위치 여야)
.container {
position: relative;/*important*/
width: 200px;/*any width*/
height: 200px;/*any height*/
background: red;
}
요소 ( div )는 모든 크기 일 수 있습니다 ( 컨테이너보다 작아야 함 )
.center {
position: absolute;/*important*/
top: 50%;/*position Y halfway in*/
left: 50%;/*position X halfway in*/
transform: translate(-50%,-50%);/*move it halfway back(x,y)*/
width: 100px;/*any width*/
height: 100px;/*any height*/
background: blue;
}
결과는 다음과 같습니다. 코드 스 니펫을 실행
.container {
position: relative;
width: 200px;
height: 200px;
background: red;
}
.center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
width: 100px;
height: 100px;
background: blue;
}
<div class="container">
<div class="center"></div>
</div>
나는 그것이 매우 도움이된다는 것을 알았다
이것은 다른 답변의 혼합으로 우리에게 도움이되었습니다.
.el {
position: absolute;
top: 50%;
margin: auto;
transform: translate(-50%, -50%);
}
나는이 질문에 이미 몇 가지 대답이 있음을 이해하지만, 거의 모든 클래스에서 작동하고 이해하기 쉽고 우아한 솔루션을 찾지 못했습니다. 여기에 무리를 조정 한 후 취해야 할 사항이 있습니다.
.container {
position: relative;
}
.container .cat-link {
position: absolute;
left: 50%;
top: 50%;
transform: translate3d(-50%,-50%,0);
z-index: 100;
text-transform: uppercase; /* Forces CSS to treat this as text, not a texture, so no more blurry bugs */
background-color: white;
}
.color-block {
height: 250px;
width: 100%;
background-color: green;
}
<div class="container">
<a class="cat-link" href="">Category</a>
<div class="color-block"></div>
</div>
이것이 말하는 것은 나에게 a top: 50%
와 a를 주고 , "미러 공간을 만든다"는 의미에서 left: 50%
X / Y 축의 -50%
값으로 변환 (공간을 만든다) 하는 것이다.
따라서 이것은 div의 4 점 모두에 동일한 공간을 만듭니다. 이는 항상 상자입니다 (4면이 있음).
이것은 :
translate(-50%,-50%);
무엇입니까?
컨테이너 요소의 중앙에 원하는 절대 위치 요소의 임의의 알 수없는 너비에서 작동합니다.
<div class="container">
<div class="box">
<img src="https://picsum.photos/200/300/?random" alt="">
</div>
</div>
.container {
position: relative;
width: 100%;
}
.box {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
}
Flex는 절대 위치 div를 중앙에 배치하는 데 사용할 수 있습니다.
display:flex;
align-items:center;
justify-content:center;
display: -webkit-flex;
?
내가 아는 한, 이것은 알 수없는 너비에 도달하는 것이 불가능합니다.
시나리오에서 작동하는 경우 너비와 높이가 100 % 인 보이지 않는 요소를 절대로 배치하고 여백을 사용하여 요소를 중앙에 배치 할 수 있습니다 : 자동 및 수직 정렬. 그렇지 않으면 Javascript가 필요합니다.
@bobince의 답변에 추가하고 싶습니다 :
<body>
<div style="position: absolute; left: 50%;">
<div style="position: relative; left: -50%; border: dotted red 1px;">
I am some centered shrink-to-fit content! <br />
tum te tum
</div>
</div>
</body>
개선 : /// 이렇게하면 가로 스크롤 막대가 가운데 div에 큰 요소와 함께 표시되지 않습니다.
<body>
<div style="width:100%; position: absolute; overflow:hidden;">
<div style="position:fixed; left: 50%;">
<div style="position: relative; left: -50%; border: dotted red 1px;">
I am some centered shrink-to-fit content! <br />
tum te tum
</div>
</div>
</div>
</body>
이를 수행하는 유용한 jQuery 플러그인이 있습니다. 찾을 여기 . CSS로만 가능하다고 생각하지 않습니다.
/**
* @author: Suissa
* @name: Absolute Center
* @date: 2007-10-09
*/
jQuery.fn.center = function() {
return this.each(function(){
var el = $(this);
var h = el.height();
var w = el.width();
var w_box = $(window).width();
var h_box = $(window).height();
var w_total = (w_box - w)/2; //400
var h_total = (h_box - h)/2;
var css = {"position": 'absolute', "left": w_total+"px", "top":
h_total+"px"};
el.css(css)
});
};
위의 반응 형 솔루션의 sass / compass 버전 :
#content {
position: absolute;
left: 50%;
top: 50%;
@include vendor(transform, translate(-50%, -50%));
}
transform: translate(-50%, -50%)
웹킷 브라우저를 사용하여 OS X에서 텍스트 및 기타 모든 컨텐츠를 흐리게합니다. keithclark.co.uk/articles/gpu-text-rendering-in-webkit
-webkit-font-smoothing: antialiased;
btw 게시 한 기사에서 수집 한 앤티 앨리어싱 유형 만 사용하십시오 !
이것은 나를 위해 일했다 :
<div class="container><p>My text</p></div>
.container{
position: absolute;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
}
나는 이미 답변을 제공했으며 다른 사람들과 함께 이전 답변은 잘 작동한다는 것을 알고 있습니다. 그러나 나는 이것을 과거에 사용해 왔으며 특정 브라우저 및 특정 상황에서 더 잘 작동합니다. 그래서 id 도이 답변을 제공한다고 생각했습니다. 이전 답변을 "수정"하지 않았습니다. 이것이 완전히 별도의 답변이고 내가 제공 한 두 가지는 관련이 없다고 생각하기 때문에 추가했습니다.
HTML :
<div id='parent'>
<div id='child'></div>
</div>
CSS :
#parent {
display: table;
}
#child {
display: table-cell;
vertical-align: middle;
}
#container
{
position: relative;
width: 100%;
float:left
}
#container .item
{
width: 50%;
position: absolute;
margin: auto;
left: 0;
right: 0;
}
HTML
<div id='parent'>
<div id='centered-child'></div>
</div>
CSS
#parent {
position: relative;
}
#centered-child {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto auto;
}
요소가있는 경우이 솔루션은 작동 width
및height
.wrapper {
width: 300px;
height: 200px;
background-color: tomato;
position: relative;
}
.content {
width: 100px;
height: 100px;
background-color: deepskyblue;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
}
<div class="wrapper">
<div class="content"></div>
</div>
이 질문에 대한 해결책이 제 경우에는 효과가 없었습니다 .. 일부 이미지에 자막을 작성하고 있으며 이것을 사용하여 해결했습니다.
top: 0;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
display: flex;
align-items: center;
figure {
position: relative;
width: 325px;
display: block
}
figcaption{
position: absolute;
background: #FFF;
width: 120px;
padding: 20px;
-webkit-box-shadow: 0 0 30px grey;
box-shadow: 0 0 30px grey;
border-radius: 3px;
display: block;
top: 0;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
display: flex;
align-items: center;
}
<figure>
<img src="https://picsum.photos/325/600">
<figcaption>
But as much
</figcaption>
</figure>
HTML :
<div class="wrapper">
<div class="inner">
content
</div>
</div>
CSS :
.wrapper {
position: relative;
width: 200px;
height: 200px;
background: #ddd;
}
.inner {
position: absolute;
top: 0; bottom: 0;
left: 0; right: 0;
margin: auto;
width: 100px;
height: 100px;
background: #ccc;
}
이것은 페이지 중앙에 DIV를 정확하게 띄우기 위해 알아 낸 요령입니다. 물론 못 생겼지 만 모두 작동합니다
점과 대시
<div style="border: 5 dashed red;position:fixed;top:0;bottom:0;left:0;right:0;padding:5">
<table style="position:fixed;" width="100%" height="100%">
<tr>
<td style="width:50%"></td>
<td style="text-align:center">
<div style="width:200;border: 5 dashed green;padding:10">
Perfectly Centered Content
</div>
</td>
<td style="width:50%"></td>
</tr>
</table>
</div>
청소기
5 년이 지났지?
<div style="position:fixed;top:0px;bottom:0px;left:0px;right:0px;padding:5px">
<table style="position:fixed" width="100%" height="100%">
<tr>
<td style="width:50%"></td>
<td style="text-align:center">
<div style="padding:10px">
<img src="Happy.PM.png">
<h2>Stays in the Middle</h2>
</div>
</td>
<td style="width:50%"></td>
</tr>
</table>
이미지를 div에 배치하고 div ID를 추가하고 해당 div의 CSS에 text-align:center
HTML :
<div id="intro_img">
<img src="???" alt="???">
</div>
CSS :
#intro_img {
text-align:center;
}
알 수없는 너비의 블록을 가로로 가운데에 배치하는 간단한 접근법 :
<div id="wrapper">
<div id="block"></div>
</div>
#wrapper { position: absolute; width: 100%; text-align: center; }
#block { display: inline-block; }
텍스트 정렬 속성을 #block 규칙 세트에 추가하여 블록의 정렬과 무관하게 내용을 정렬 할 수 있습니다.
이것은 최신 버전의 Firefox, Chrome, IE, Edge 및 Safari에서 작동했습니다.