В CSS, как я могу сделать что-то вроде этого:
width: 100% - 100px;
Я думаю, это довольно просто, но немного сложно найти примеры, демонстрирующие это.
В CSS, как я могу сделать что-то вроде этого:
width: 100% - 100px;
Я думаю, это довольно просто, но немного сложно найти примеры, демонстрирующие это.
Современные браузеры теперь поддерживают:
width: calc(100% - 100px);
Чтобы просмотреть список поддерживаемых версий браузеров: Могу ли я использовать calc() в качестве значения элемента CSS?
Существует резервное копирование jQuery: css width: calc (100% -100px); альтернатива с использованием jquery
Не могли бы вы вставить div с margin-left: 50px;
и margin-right: 50px;
внутри a <div>
с помощью width: 100%;
?
Вы можете попробовать это...
<!--First Solution-->
width: calc(100% - 100px);
<!--Second Solution-->
width: calc(100vh - 100px);
У вас должен быть контейнер для вашего контента div, который вы хотите быть 100% - 100px
#container {
width: 100%
}
#content {
margin-right:100px;
width:100%;
}
<div id="container">
<div id="content">
Your content here
</div>
</div>
Вам может потребоваться добавить разделительный ящик непосредственно перед последним </div>
, если ваш контентный div переполнен.
<div style="clear:both; height:1px; line-height:0"> </div>
мой код, и он работает для IE6:
<style>
#container {margin:0 auto; width:100%;}
#header { height:100px; background:#9c6; margin-bottom:5px;}
#mainContent { height:500px; margin-bottom:5px;}
#sidebar { float:left; width:100px; height:500px; background:#cf9;}
#content { margin-left:100px; height:500px; background:#ffa;}
</style>
<div id="container">
<div id="header">header</div>
<div id="mainContent">
<div id="sidebar">left</div>
<div id="content">right 100% - 100px</div>
<span style="display:none"></span></div>
</div>
Настройка полей тела на 0, ширина внешнего контейнера до 100% и использование внутреннего контейнера с полями слева и справа 50 пикселей будут работать.
<style>
body {
margin: 0;
padding: 0;
}
.full-width
{
width: 100%;
}
.innerContainer
{
margin: 0px 50px 0px 50px;
}
</style>
<body>
<div class="full-width" style="background-color: #ff0000;">
<div class="innerContainer" style="background-color: #00ff00;">
content here
</div>
</div>
</body>
Работая с панелями bootstrap, я искал, как поместить ссылку "удалить" в панели заголовка, которая не будет скрыта элементом длинного соседа. И вот решение:
HTML:
<div class="with-right-link">
<a class="left-link" href="#">Long link header Long link header</a>
<a class="right-link" href="#">Delete</a>
</div>
CSS
.with-right-link { position: relative; width: 275px; }
a.left-link { display: inline-block; margin-right: 100px; }
a.right-link { position: absolute; top: 0; right: 0; }
Конечно, вы можете изменить значения "сверху" и "справа" в соответствии с вашими отступами. Источник
Не могли бы вы сделать:
margin-right: 50px;
margin-left: 50px;
Изменить: Мое решение неверно. Решение, размещенное Aric TenEyck, предлагающее использовать div с шириной 100%, а затем вложение другого div с использованием полей, кажется более правильным.
Наложение на внешний div будет иметь желаемый эффект.
<html>
<head>
<style>
#outer{
padding: 0 50px;
border:1px solid black; /*for visualization*/
}
#inner{
border:1px solid red; /*for visualization*/
}
</style>
</head>
<body>
<div id="outer">
<div id="inner">
100px smaller than outer
</div>
</div>
</body>
</html>
Есть два метода, которые могут пригодиться для этого общего сценария. У каждого есть свои недостатки, но они могут быть полезны время от времени.
размер окна: border-box включает в себя прописку и ширину границы по ширине элемента. Например, если вы установите ширину div с 20px 20px padding и 1px border до 100px, фактическая ширина будет 142px, но с пограничным полем, как дополнение, так и маржа находятся внутри 100px.
.bb{
-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box; /* Firefox, other Gecko */
box-sizing: border-box;
width: 100%;
height:200px;
padding: 50px;
}
Здесь отличная статья: http://css-tricks.com/box-sizing/ и здесь скрипка http://jsfiddle.net/L3Rvw/
И затем там position: absolute
.padded{
position: absolute;
top: 50px;
right: 50px;
left: 50px;
bottom: 50px;
background-color: #aefebc;
}
Ни один из них не идеален, конечно, размер окна не соответствует точному вопросу, поскольку элемент на самом деле составляет 100% ширину, а не 100% - 100 пикселей (однако дочерний div будет). И абсолютное позиционирование определенно нельзя использовать в любой ситуации, но обычно это нормально, пока установлена высота родителя.
CSS не может использоваться для анимации или любой модификации стиля в событиях.
Единственный способ - использовать функцию javascript, которая вернет ширину данного элемента, затем вычитает 100px и установит новый размер ширины.
Предполагая, что вы используете jQuery, вы можете сделать что-то вроде этого:
oldWidth = $('#yourElem').width();
$('#yourElem').width(oldWidth-100);
И с собственным javascript:
oldWidth = document.getElementById('yourElem').clientWidth;
document.getElementById('yourElem').style.width = oldWidth-100+'px';
Предположим, что у вас есть стиль css со 100%;
<div style="width: 200px; border: 1px solid red;">
<br>
<div style="margin: 0px 50px 0px 50px; border: 1px solid blue;">
<br>
</div>
<br>
</div>
Используете ли вы режим стандартов? Это решение зависит от этого, я думаю.
Если вы пытаетесь сделать 2 столбца, вы можете сделать что-то вроде этого:
<div id="outer">
<div id="left">
sidebar
</div>
<div id="main">
lorem ispsum etc...
</div>
</div>
Затем используйте CSS для его стилирования:
div#outer
{
width:100%;
height: 500px;
}
div#left
{
width: 100px;
height: 100%;
float:left;
background: green;
}
div#main
{
width: auto;
margin-left: 100px; /* same as div#left width */
height: 100%;
background:red;
}
Если вам не нужны 2 столбца, вы можете удалить <div id="left">
Вы можете использовать LESS, который является файлом JavaScript, который предварительно обрабатывает ваш CSS, чтобы вы могли включить логику и переменные в ваш CSS. Итак, для вашего примера, в LESS вы должны написать width: 100% - 100px;
для достижения именно того, что вы хотели:)
Он начал работать для меня только тогда, когда я проверил все пробелы.
Таким образом, это не сработало: width: calc(100%- 20px)
или calc(100%-20px)
и отлично работало с width: calc(100% - 20px)
.
Короткий ответ: вы НЕ делаете этого в CSS. Internet Explorer поддерживает что-то, называемое CSS-выражениями, но это не стандартно и определенно не поддерживается другими браузерами, например FireFox.
Вам было бы лучше сделать это в JavaScript.
Вы не можете.
Однако вы можете использовать поля для достижения одного и того же результата.
Это работает:
margin-right:100px;
width:auto;