CSS Calc Viewport единицы обхода?
из того, что я видел в другое ответы, CSS viewport единицы не могут быть использованы в calc()
заявления. Чего я хотел бы достичь, так это следующего утверждения:
height: calc(100vh - 75vw)
есть ли какой-то обходной путь, которым я могу достичь этого используя чисто CSS даже если единицы просмотра не могут быть использованы в calc()
заявление? Или просто CSS и HTML? Я знаю, что могу сделать это динамически, используя javascript, но я бы предпочел CSS.
3 ответов
прежде чем ответить на этот вопрос, я хотел бы отметить, что Chrome и IE 10+ фактически поддерживают calc с единицами просмотра.
скрипка (в IE10+)
решение (для других браузеров): box-sizing
1) Начните с установки вашей высоты как 100vh.
2)с размером коробки, установленным в border-box, добавьте верхнюю часть 75vw. Это означает, что обивка будет часть внутренней высоты.
3) просто компенсирует padding-top с отрицательным запасом-top
скрипка
div
{
/*height: calc(100vh - 75vw);*/
height: 100vh;
margin-top: -75vw;
padding-top: 75vw;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: pink;
}
в качестве обходного пути вы можете использовать тот факт, процентов по вертикали padding и margin рассчитывается от ширины контейнера. Это довольно уродливое решение, и я не знаю, сможете ли вы его использовать, но хорошо, он работает:http://jsfiddle.net/bFWT9/
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div>It works!</div>
</body>
</html>
html, body, div {
height: 100%;
}
body {
margin: 0;
}
div {
box-sizing: border-box;
margin-top: -75%;
padding-top: 75%;
background: #d35400;
color: #fff;
}
<div>It's working fine.....</div>
div
{
height: calc(100vh - 8vw);
background: #000;
overflow:visible;
color: red;
}
проверьте здесь этот код css прямо сейчас поддержка всех браузеров без Opera
Live