#html #css #960.gs
#HTML #css #960.gs
Вопрос:
я использую сеточную систему 960, чтобы попытаться создать макет… У меня есть следующий код:
<div class="container_12">
<div class="grid_3 alpha"></div>
<div class="grid_9 omega"></div>
</div>
Я использую alpha и omega для удаления левого и правого полей соответственно.. Это позволяет подразделениям касаться левого края контейнера..
Проблема, однако, заключается в том, что правая grid_9 omega не касается правой стороны. Я понимаю, почему это происходит, но я не знаю, как исправить это поведение с помощью методов 960..
Спасибо,
Ответ №1:
Это может помочь понять основы, лежащие в основе 960 grid framework. Эта структура основана на очень простом принципе, который сочетает фиксированную ширину и поля для создания макета, подобного сетке, для быстрой разработки веб-сайта. Используется вся структура float: left
, которая позволяет отображать полосы рядом друг с другом, а также создавать буфер размером 20 пикселей между каждой сеткой. И поэтому я считаю, что вы неправильно понимаете использование "alpha"
"omega"
классов and . Эти классы предназначены для удаления полей в сетках, которые являются дочерними элементами других сеток, так что поле умножается.
Возьмем этот код для примера:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>960 Grid System amp;mdash; Demo</title>
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/text.css" />
<link rel="stylesheet" href="css/960.css" />
</head>
<body>
<div class="container_12" style="background:blue;">
<div class="grid_3 alpha" style="background:yellow;">Grid_3 Alpha</div>
<div class="grid_9 omega" style="background:green;">Grid_9 Omega</div>
</div>
</body>
</html>
Это создает нечто похожее на:
вы заметите, что слева от Grid_3 нет поля, но между Grid_3 и Grid_9 есть поле в 20 пикселей. Это вызвано тем, что Grid_3 имеет a margin-right:10px
, а Grid_9 имеет a margin-left:10px
. Когда оба divs перемещаются влево, они создают этот интервал. Вы также заметите, что справа от Grid_9 есть еще одно поле размером 10 пикселей. Это связано с тем, что левое поле было удалено в Grid_3 и теперь весь макет смещен на 10 пикселей внутри container_12 div.
Для достижения макета, который вы описали. Что, насколько я понимаю, должно выглядеть так:
Вам нужно будет либо создать новый класс, чтобы применить a float:right
к Grid_9, либо увеличить ширину Grid_9.
Чтобы сделать это встроенным, это выглядело бы примерно так:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>960 Grid System amp;mdash; Demo</title>
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/text.css" />
<link rel="stylesheet" href="css/960.css" />
</head>
<body>
<div class="container_12" style="background:blue;">
<div class="grid_3 alpha" style="background:yellow;">Grid_3 Alpha</div>
<div class="grid_9 omega" style="float:right; background:green;">Grid_9 Omega</div>
</div>
</body>
</html>
Комментарии:
1. Спасибо, что нашли время написать подробное объяснение. Я надеялся, что это собственный класс в системе 960 grid, который будет делать то, что я требовал, не добавляя свой собственный CSS. Несмотря на то, что я не получил точного ответа, который искал, я узнал несколько вещей из вашего сообщения..
Ответ №2:
Вы не используете систему 960 в том виде, в каком она была разработана. Поля, которые удаляются с помощью классов alpha и omega, увеличат его до 960 пикселей.
Альфа и омега удаляют только поля слева и справа соответственно, они не меняют ширину. Если вы хотите, чтобы это работало, вам нужно будет добавить класс в grid_9 omega
div, придав ему ширину, превышающую стандартную. может быть, 720 пикселей?
<style>
.wide_9{width:720px;}
</style>
<div class="container_12">
<div class="grid_3 alpha"></div>
<div class="grid_9 wide_9 omega"></div>
</div>
Комментарии:
1. Подождите, вы говорите: «Вы не используете систему 960 в том виде, в каком она была разработана», а затем используете хак, чтобы заставить вещи работать? Я не использую 960gs, но это кажется неправильным, плюс OP сказал, что хочет «исправить это поведение, используя методы 960». Значит, нет способа сделать это «изначально» с помощью grid framework?
2. Я бы не назвал определение класса и настройку его ширины взломом. Разумно предположить, что OP знает, что не нужно помещать теги стиля в тело. Если он хочет нестандартного поведения, ему нужно добавить свой собственный css. Я не видел никаких положений о том, что он хочет сделать в CSS сетки. Подобные фреймворки дают вам отличную основу, но если вы хотите сделать что-то особенное, вам нужно добавить свой собственный css. Это данность.
3. Да, «взломать» — слишком сильный термин, я просто удивлен, что для этого не было бы встроенного решения, особенно если
alpha
класс работает для первого div. 1 тогда, но, возможно, добавление класса в контейнер likefull-width
было бы хорошим решением.
Ответ №3:
Вам нужно использовать классы alpha и omega для дочерних элементов. Если ваш макет должен касаться полей (вы используете background), правильное использование классов alpha и omega будет выглядеть примерно так: прикрепление фона к grid_12
div.
<div class="container_12">
<div class="grid_12">
<div class="grid_3 alpha"></div>
<div class="grid_9 omega"></div>
</div>
</div>
или, если вам не нужно выравнивание фона, вы можете просто опустить классы alpha и omega
<div class="container_12">
<div class="grid_3"></div>
<div class="grid_9"></div>
</div>
Оба этих фрагмента должны выглядеть одинаково в браузере.