width : 100 %가 div {display : table-cell}에서 작동하지 않는 이유는 무엇입니까?
이미지 슬라이드 (flexslider)를 오버레이하는 일부 콘텐츠를 수직 및 수평 중앙에 배치하려고합니다. 이 질문과 비슷한 질문이 있었지만 특정 문제에 직접 적용 할 수있는 만족스러운 해결책을 찾을 수 없었습니다. FlexSlider의 한계로 인해 position: absolute;
구현시 img 태그에 사용할 수 없습니다 .
작업 아래에 거의 해결 방법이 있습니다. 유일한 문제는 속성을 inner-wrapper
사용하여 div 에서 작동하도록 너비 및 높이 선언을 가져올 수 없다는 것 display: table-cell
입니다.
이 표준 동작입니까, 아니면 코드에 누락 된 것이 있습니까? 표준 행동이라면 내 문제에 대한 최선의 해결책은 무엇입니까?
HTML
<ul>
<li>
<img src="#">
<div class="outer-wrapper">
<div class="inner-wrapper">
<h1>My Title</h1>
<h5>Subtitle</h5>
</div>
</div>
</li>
</ul>
CSS
html, body {
margin: 0; padding: 0;
width: 100%; height: 100%;
}
ul {
background: #CCC;
height: 100%;
width: 100%;
list-style-position: outside;
margin: 0; padding: 0;
}
li {
width: 100%;
display: table;
}
img {
width: 100%;
height: 410px;
}
.outer-wrapper {
position: absolute;
width: 100%;
height: 100%;
top: 0;
margin: 0; padding: 0;
}
.inner-wrapper {
display: table-cell;
vertical-align: middle;
text-align: center;
width: 100%;
height: 100%;
}
참고 : 중앙에있는 콘텐츠는 두 개 이상의 요소이므로 줄 높이 트릭을 사용할 수 없습니다.
jsFiddle .
display:table;
안에 넣는 .outer-wrapper
것 같았는데 ...
편집 : 디스플레이 테이블 셀을 사용하는 두 개의 래퍼
나는 당신의 대답에 대해 언급 할 것이지만 나는 담당자가 너무 적습니다 :( 어쨌든 ...
당신의 대답 에서 벗어나 면 , 당신이해야 할 일은 display:table;
안에 추가하는 것 같습니다 .outer-wrapper
(Dejavu?), 당신은 table-wrapper
전심으로 제거 할 수 있습니다 .
하지만 네, 위에 position:absolute
놓을 수 있습니다. 너무 빨리 읽고 전혀 사용할 수 없다고 생각 했지만 이미 알아 낸 것 같습니다. 소품!div
img
position:absolute
99 % timshutes의 모든 작업 후에 소스 코드를 게시하지 않을 것이므로 그의 답변을 참조하거나 내 jsfiddle 링크를 사용하십시오.
업데이트 : Flexbox를 사용하는 하나의 래퍼
오랜만이고 멋진 아이들은 모두 flexbox를 사용하고 있습니다.
<div style="display: flex; flex-direction: column; justify-content: center; align-items: center;">
stuff to be centered
</div>
브라우저 지원 ( 소스 ) : IE 11+, FireFox 42+, Chrome 46+, Safari 8+, iOS 8.4+ ( -webkit-
접두사), Android 4.1+ ( -webkit-
접두사)
How to Center in CSS : 콘텐츠를 중앙에 배치하는 방법을 입력하고이를 수행하는 방법을 html 및 css로 출력합니다. 미래가 여기 있습니다!
나는 이것을 알아 냈다. 나는 이것이 언젠가 누군가를 도울 것이라는 것을 알고 있습니다.
상대적으로 배치 된 이미지에서 Div를 수직 및 수평 중앙에 배치하는 방법
열쇠는 세 번째 래퍼였습니다. 나는 더 적은 래퍼를 사용하는 답변에 투표 할 것입니다.
HTML
<div class="wrapper">
<img src="my-slide.jpg">
<div class="outer-wrapper">
<div class="table-wrapper">
<div class="table-cell-wrapper">
<h1>My Title</h1>
<p>Subtitle</p>
</div>
</div>
</div>
</div>
CSS
html, body {
margin: 0; padding: 0;
width: 100%; height: 100%;
}
ul {
width: 100%;
height: 100%;
list-style-position: outside;
margin: 0; padding: 0;
}
li {
width: 100%;
display: table;
}
img {
width: 100%;
height: 100%;
}
.outer-wrapper {
width: 100%;
height: 100%;
position: absolute;
top: 0;
margin: 0; padding: 0;
}
.table-wrapper {
width: 100%;
height: 100%;
display: table;
vertical-align: middle;
text-align: center;
}
.table-cell-wrapper {
width: 100%;
height: 100%;
display: table-cell;
vertical-align: middle;
text-align: center;
}
여기서 작동하는 jsFiddle을 볼 수 있습니다 .
I discovered that the higher the value of 'width' is, the smaller the box width is made and vice versa. I found this out because I had the same problem earlier. So:
.inner-wrapper {
width: 1%;
}
solves the problem.
Welcome to 2017 these days will using vW
and vH
do the trick
html, body {
margin: 0; padding: 0;
width: 100%; height: 100%;
}
ul {
background: #CCC;
height: 100%;
width: 100%;
list-style-position: outside;
margin: 0; padding: 0;
}
li {
width: 100%;
display: table;
}
img {
width: 100%;
height: 410px;
}
.outer-wrapper {
position: absolute;
width: 100%;
height: 100%;
top: 0;
margin: 0; padding: 0;
}
.inner-wrapper {
display: table-cell;
vertical-align: middle;
text-align: center;
width: 100vw; /* only change is here "%" to "vw" ! */
height: 100vh; /* only change is here "%" to "vh" ! */
}
<ul>
<li>
<img src="#">
<div class="outer-wrapper">
<div class="inner-wrapper">
<h1>My Title</h1>
<h5>Subtitle</h5>
</div>
</div>
</li>
</ul>
Your 100% means 100% of the viewport, you can fix that using the vw unit besides the % unit at the width. The problem is that 100vw is related to the viewport, besides % is related to parent tag. Do like that:
.table-cell-wrapper {
width: 100vw;
height: 100%;
display: table-cell;
vertical-align: middle;
text-align: center;
}
How about this? (jsFiddle link)
CSS
ul {
background: #CCC;
height: 1000%;
width: 100%;
list-style-position: outside;
margin: 0; padding: 0;
position: absolute;
}
li {
background-color: #EBEBEB;
border-bottom: 1px solid #CCCCCC;
border-right: 1px solid #CCCCCC;
display: table;
height: 180px;
overflow: hidden;
width: 200px;
}
.divone{
display: table-cell;
margin: 0 auto;
text-align: center;
vertical-align: middle;
width: 100%;
}
img {
width: 100%;
height: 410px;
}
.wrapper {
position: absolute;
}
Just add min-height:100% and min-width:100% and it will work. I had the same problem. You don't need a 3th wrapper
참고URL : https://stackoverflow.com/questions/17736570/why-is-width-100-not-working-on-div-display-table-cell
'Programing' 카테고리의 다른 글
CSS 키 프레임 애니메이션 CPU 사용량이 높습니다. 이렇게해야합니까? (0) | 2020.11.25 |
---|---|
Apache Karaf는 정확히 무엇입니까? (0) | 2020.11.25 |
Bower의 bower.json에서 "무시"하시겠습니까? (0) | 2020.11.25 |
C에서 double이 C ++보다 소수를 더 적게 인쇄하는 이유는 무엇입니까? (0) | 2020.11.25 |
std :: copy_if 알고리즘이없는 이유는 무엇입니까? (0) | 2020.11.25 |