Як у CSS можна зробити щось подібне:
width: 100% - 100px;
Я думаю, що це досить просто, але трохи важко знайти приклади, що це показують.
width: calc(100% - 100px);
це кілька відповідей, і я сподіваюся, що запитувач оновить своє запитання :) :)
Як у CSS можна зробити щось подібне:
width: 100% - 100px;
Я думаю, що це досить просто, але трохи важко знайти приклади, що це показують.
width: calc(100% - 100px);
це кілька відповідей, і я сподіваюся, що запитувач оновить своє запитання :) :)
Відповіді:
Сучасні браузери тепер підтримують:
width: calc(100% - 100px);
Щоб переглянути список замовлених версій браузера, чи можна перевірити: Чи можна використовувати calc () як значення одиниці CSS?
Є резервна версія jQuery: ширина css: calc (100% -100px); альтернатива за допомогою jquery
calc(100% - 6px)
наприклад, він відображав так calc(94%)
, що мені довелося уникнути цього так, і тепер це працюєwidth: calc(~"100% - 6px");
-
(або +
). Це працює: calc(100% - 100px);
І це не так:calc(100%-100px);
padding: 0.25em; width: calc(100% - 2 * 0.25em - 2em);
, і мені доведеться зараз змінити 0.25em
два місця, якщо до нього доведеться внести зміни.
Не могли б ви вкласти гніздо з margin-left: 50px;
і margin-right: 50px;
в a <div>
з width: 100%;
?
Ви можете спробувати це ...
<!--First Solution-->
width: calc(100% - 100px);
<!--Second Solution-->
width: calc(100vh - 100px);
vw: ширина вікна перегляду
vh: висота вікна перегляду
calc(100% - 6px)
наприклад, він відображав так calc(94%)
, як мені довелося уникнути цього так, і тепер це працюєwidth: calc(~"100% - 6px");
мій код, і він працює для 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>
Потрібно мати контейнер для вмісту, який ви хочете мати 100% - 100 пікс
#container {
width: 100%
}
#content {
margin-right:100px;
width:100%;
}
<div id="container">
<div id="content">
Your content here
</div>
</div>
Можливо, вам доведеться додати очищаючий div безпосередньо перед останнім, </div>
якщо ваш вміст div переповнюється.
<div style="clear:both; height:1px; line-height:0"> </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>
Працюючи з панелями завантаження, я шукав, як розмістити посилання "delete" на панелі заголовків, що не затьмарило б довгий сусідній елемент. І ось рішення:
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; }
Звичайно, ви можете змінювати значення "верхнє" та "правильне" відповідно до відступів. Джерело
Це почало працювати для мене лише тоді, коли я перевірив усі пробіли. Отже, це не працювало так: width: calc(100%- 20px)
або calc(100%-20px)
прекрасно працювало з ним width: calc(100% - 20px)
.
Чи можете ви зробити:
margin-right: 50px;
margin-left: 50px;
Редагувати: Моє рішення неправильне. Рішення, розміщене Aric TenEyck, що пропонує використовувати div з шириною 100%, а потім вкласти ще один div з полями, здається більш правильним.
width:100%
. Див автоматично заповнить контейнер, якщо ви не перекриєте це, наприклад, чітко вказавши width
, або використовуючи float
або абсолютне позиціонування. Додавання маржі до 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>
Є два методи, які можуть стати в нагоді для цього загального сценарію. У кожного є свої недоліки, але вони можуть бути корисними часом.
розмір ящика: рамка рамки включає прокладку та ширину рамки в ширину елемента. Наприклад, якщо встановити ширину ключа з 20px 20px прокладкою та 1px рамкою на 100px, фактична ширина буде 142px, але з полем border, і padding, і margin знаходяться всередині 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/
А тут є позиція: абсолютна
.padded{
position: absolute;
top: 50px;
right: 50px;
left: 50px;
bottom: 50px;
background-color: #aefebc;
}
Звичайно, жоден із них не ідеальний, розмір коробки не точно відповідає питанню, оскільки елемент насправді становить 100% ширину, а не 100% - 100 пікселів (однак, дочірній поділ був би). І абсолютне позиціонування, безумовно, не може використовуватися в будь-якій ситуації, але, як правило, добре, якщо встановлено висоту батьків.
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%;
Ви використовуєте стандартний режим? Від цього залежить це рішення, я думаю.
Якщо ви намагаєтеся зробити 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">
Ви не можете.
Однак ви можете використовувати поля для досягнення того ж результату.
Це працює:
margin-right:100px;
width:auto;
Коротка відповідь - ви цього не робите в CSS. Internet Explorer має підтримку чогось під назвою CSS Expressions, але це не є стандартним і, безумовно, не підтримується іншими браузерами, наприклад FireFox.
Вам краще зробити це в JavaScript.