Так что я пытаюсь построить чистый CSS отзывчивый квадрат (ну на самом деле я пытаюсь построить круг, но это легко, как только у меня есть квадрат.)CSS Адаптивный Square Fluid (с прокруткой контента)
другими словами:
Я хочу
div
, который имеетheight
который процент отbody
иwidth
, которая равна (или наоборот).div
также нуждается в другомdiv
внутри него, который может содержать контент иoverflow: auto
.Наконец,
div
никогда не может превышатьheight
(илиwidth
) изbody
илиviewport
.
До сих пор у меня есть какое-то решение, работающее частично (т.е. в portrait
, но не landscape
) с помощью 1px прозрачного .gif как img
заполнить оболочку div
. Не идеальная семантика, но я не вижу, как это можно сделать без нее.
<div class="wrap">
<img src="http://www.neurillion.com/p/35/static/media/images/1x1t.gif" />
<main>
<div class="content">
<h2>Title</h2>
<p> Lorem... etc. </p>
</div>
</main>
</div>
Вот мои CSS решения и то, что случилось с ними:
Это работает, кроме него превышает
height
изbody
вlandscape
(max-height
в любом из элементов не решить эту проблему) :.wrap { background: blue; margin: 10% auto; width: 70%; position:relative; text-align:center; } .wrap img { border: 1px solid black; height: auto; width: 100%; } main { background: red; display: block; border-radius:50%; height: 100%; width: 100%; position: absolute; top:0 } main div { background: green; overflow: auto; display:inline-block; height:70%; width: 70%; margin-top:15%; }
Далее я добавил медиа-запрос
landscape
, чтобы поменять местами значенияheight
иwidth
. Та же проблема.@media(orientation:landscape) { .wrap { margin: auto 10%; height: 70%; width: auto; } }
В этот момент я начал искать в родительских элементов
.wrap
«s, а именноbody
иhtml
. (Resource on the difference between them.) Я добавилheight
иmax-height: 100%
к обоим, но без радости. Я также попытался добавить еще один контейнерdiv
, поскольку, по-моему, было бы легче контролировать высоту, но это, похоже, тоже мало.
И теперь у меня практически нет вариантов. Я уверен, что решение связано с элементами и body
и тем, как они стремятся расширяться вертикально, но я не совсем уверен, как еще остановить их выполнение.
Любая помощь очень ценится.
Вы, сэр, герой. Огромное спасибо. Специально для ссылки caniuse. – sanjaypoyzer
Из интереса, несвязанный. Почему вы предпочитаете использовать jsfiddle для кодирования? – sanjaypoyzer
Я использую codepen все время на самом деле, но это немного слишком «тяжело» для демонстрации. Я [AMKohn] (http://codepen.io/AMKohn), если вы заинтересованы. –