Margin from border css

Creating space between an element and its border

I’m trying to create a spacing between an element and its outermost border. (EDIT: he wants to do two borders between the element proper and the outside of the box-model box. This gives him the room of using the margin, border and padding to achieve his goal). So far my searches in Google and here produced no solution to this. I am trying to avoid using images to acheive this.

5 Answers 5

Here’s a link to a site that demonstrates «margin», «border», and «padding» for an element. http://css-tricks.com/the-css-box-model/

However, there used to be a problem with IE’s rendering of the box model and the «rest of the world» in that IE used a different mechanism to determine «overall width». You need to understand that if you plan on supporting IE7 (two generations old) or older.

I imagine that using the «rest of the world» way will be sufficient for your needs.

For the rest of the world (and the sake of when that link no longer works) here’s an ascii version of the same diagram:

+----------------------------+ | | | margin | | | | *******border********** | | * * | | * padding * | | * * | | * --------------- * | | * --------------- * | | * ---ELEMENT----- * | | * --------------- * | | * --------------- * | | * * | | *********************** | | | | | +----------------------------+ 

the padding doesnt seem to work. using the following css there is no transperent spacing between the black color and the red border: div

@GZaidman Then you need to nest a div inside a div. I thought you wanted spacing from the element. Background-color does not affect only the element. You were not clear on that when you first posted the question, and then I was afk. Hope this helps.

I read about multiple borders (here), and I think it might help solve the problem without using another div, but I dont know if it’s possible to create a transparent border

There is no such CSS property as «multiple borders». What that article discusses is advanced CSS concepts. If you notice, it’s effectively creating a wrapper element (using :before) that can do what you want. I suggest sticking to the simpler to manipulate concepts until you’ve built up more familiarity with more complex examples like pseudo selectors. For what it’s worth, it was about five years after I first heard about :before and :after and it was still another six months or so before I really got how they worked. (I didn’t have a need for them either)

Источник

Читайте также:  Java using set and get

Проблема с margin при изменении свойства border

Почему при изменении свойства border меняются отступы снизу и сверху?
Есть код, приведенный ниже, он с border (в content_wrap ), и он отображается так 1Если убрать border , то будет выглядеть так: 2Листинг:

2 ответа 2

Такое явление называется margin collapsing. Ссылка на документацию.

Горизонтальные margin ‘ы никогда не схлопываются, а вот с вертикальными все немного сложнее.

Проиллюстрирую немного на примерах, для этого будем использовать следующую базовую разметку:

Смежные (перекрывающиеся) margin ‘ы не схлопываются в следующих ситуациях:

  1. если один из элементов корневой ( html ), пример на jsFiddle;
  2. этот пункт связан с понятием clearance, он может возникнуть, когда блоку приходится «оплывать», тогда margin ‘ы не схлопываются (правдиво для случаев, когда у элементов нет padding или border ). Можно поиграться на jsFiddle, если убрать clear: both; , то margin ‘ы схлопнуться. Вообще тема с плавающими (имеющими float: * ) блоками заслуживают отдельного вопроса;
  3. если один элемент вложен в другой и родительский имеет border или padding , тогда на вложенном элементе margin не схлопнется jsFiddle.

Теперь можно сказать и о случаях, когда они все таки схлопываются:

  1. если элементы находятся друг за другом в одном block formatting context (его создают внутри себя все элементы с float , абсолютным позиционированием, элементы, которые ведут себя, как блочные ( inline-block , table-cell , table-caption ), но не имеют display: block , и соответственно элементы с display: block ) и margin положительный у обоих, то результатом будет больший jsFiddle, а если какой-либо margin отрицателен, тогда результирующим значением margin ‘а будет их сумма, причем, если сумма получится отрицательной, то элементы наложатся друг на друга jsFiddle;
  2. если один элемент вложен в другой и родительский не имеет border или padding , или clearence, тогда вложенный элемент не будет отступать от родительского, а их margin ‘ы схлопнуться и у родительского будет больший из них, jsFiddle;
  3. если блок не формирует block formatting context , а потомки имеют подсчитанную min-height: 0 , height: auto или подсчитанную height: 0 , то его верхний и нижний margin будет схлопываться jsFiddle.

Источник

Отступы и рамки в CSS с помощью параметров margin, padding и border

Здравствуйте, уважаемые читатели блога webcodius.ru! Сегодня мы продолжим изучение каскадных таблиц стилей или CSS. В прошлых статьях мы уже рассмотрели в общих чертах блочную верстку сайта. В результате у нас стали получаться вполне профессиональные web-страницы, но чего-то им не хватает. А не хватает им скорей всего отступов и рамок. Сегодня мы и займемся рассмотрением стилевых правил margin, padding и border, которые позволяют задавать отступы и рамки для html-элементов.

Параметры отступов в CSS

С помощью каскадных таблиц стилей существует возможность задавать отступы двух видов.

Читайте также:  Java util arrays arraylist to arraylist

1. Внутренний отступ — это расстояние от воображаемой границы элемента до его содержимого. Величина расстояния задается с помощью параметра padding. Такой отступ принадлежит самому элементу и находится внутри него.

2. Внешний отступ — расстояние между границей текущего элемента веб-страницы и границами соседних элементов, либо родительского элемента. Размер расстояния регулируется свойством margin. Такой отступ находится вне элемента.

отступы и границы

Например, рассмотрим ячейку html таблицы заполненную текстом. Тогда внутренний отступ это расстояние между воображаемой границей ячейки и содержащимся в ней текстом. А внешний отступ это расстояние между границами соседних ячеек. Начнем с внутренних отступов.

Внутренние отступы в CSS с помощью padding (top, bottom, left, right)

Свойства стиля padding-left, padding-top, padding-right и padding-bottom позволяют задать величины внутренних отступов, соответственно, слева, сверху, справа и снизу элемента web-страницы:

padding-top | padding-right | padding-bottom | padding-left: значение | проценты | inherit

Величину отступа можно указывать в пикселах (px), процентах (%) или других допустимых для CSS единицах. При указании процентов, значение считается от ширины элемента. Значение inherit указывает, что оно наследуется от родителя.

Например, для текущего абзаца я применил правило стиля, задающий левый отступ 20 пикселей, верхний отступ 5 пикселей, справа отступ 35 пикселей и снизу 10 пикселей. Запись правила в файле каскадных таблиц стилей будет выглядеть следующим образом:

p.test padding-left:20px;
padding-top:5px;
padding-right:35px;
padding-bottom:10px
>

Сборное правило padding позволяет указать отступы сразу со всех сторон элемента веб-страницы:

В сборном правиле разрешается использовать одно, два, три или четыре значения, разделяя их между собой пробелом. В этом случае эффект зависит от количества значений:

  • если указать одно значение, то оно установит величину отступа со всех сторон элемента страницы;
  • если указать два значения, то первое задаст величину отступа сверху и снизу, а второе — слева и справа;
  • если указать три значения, то первое определит величину отступа сверху, второе — слева и справа, а третье — снизу;
  • если указаны четыре значения, то первое установит величину отступа сверху, второе — справа, третье — снизу, а четвертое — слева.

Таким образом правило CSS приведенное выше можно максимально сократить и записать следующим образом:

Свойство margin или внешние отступы в CSS

Атрибуты стиля margin-left, margin-top, margin-right и margin-bottom позволяют задать величины внешних отступов, соответственно, слева, сверху, справа и снизу:

margin-top | margin-right | margin-bottom | margin-left: |auto|inherit

Как уже упоминалось выше внешним отступом является расстояние от границы текущего элемента до границы соседнего элемента, либо, если соседних элементов нет, до внутренней границы родительского контейнера.

Величину отступа можно указывать в пикселах (px), процентах (%) или других допустимых для CSS единицах:

Значение auto означает, что размер отступов будет автоматически рассчитан браузером. В случае использования процентной записи, то отступы рассчитываются в зависимости от ширины родительского контейнера. Причем это относится не только к margin-left и margin-right, но и для margin-top и margin-bottom отступы в процентах будут рассчитываться в зависимости от ширины, а не высоты контейнера.

Читайте также:  Xml php клиент сервер

В качестве значений внешних отступов допустимо применять отрицательные величины:

Если при положительных значениях отступов соседние элементы отодвигаются, то при отрицательном значении соседний блок наедет на элемент для которого мы задали такой отрицательных отступ.

Внешние отступы мы также можем указать с помощью атрибута стиля margin. Он задает величины отступа одновременно со всех сторон элемента web-страницы:

Данное свойство в случае задания одного, двух, трех или четырех значений отступов подчиняется тем же законам, что и правило padding.

Параметры рамки с помощью свойства border

При настройке рамок существует три типа параметров:

  • border-width — толщина рамки;
  • border-color — цвет рамки;
  • border-style — тип линии с помощью которой будет нарисована рамка.

Начнем с параметра толщины рамки:

border-width: [значение | thin | medium | thick] | inherit

Толщину рамки можно задавать в пикселях, либо в других доступных в css единицах. Переменные thin, medium и thick задают толщину рамки в 2, 4 и 6 пикселей соответственно:

Как и для свойств padding и margin, для параметра border-width разрешается использовать одно, два, три или четыре значения, задавая таким образом толщину рамки для всех сторон сразу или для каждой по отдельности:

border-width: 5px 3px 5px 3px

Для текущего абзаца сделаем толщину верхней рамки 1px, правой 2px, нижней 3px, а левой 4px с помощью правила

С помощью атрибутов стиля border-left-width, border-top-width, border-right-width и border-bottom-width можно задавать толщину, соответственно, левой, верхней, правой и нижней сторон рамки:

Следующий параметр border-color с помощью которого можно управлять цветом рамки:

border-color: [цвет | transparent] | inherit

Свойство позволяет задать цвет рамки сразу для всех сторон элемента или только для указанных. В качестве значения можно использовать принятые в html для цветов способы их задания: шестнадцатеричный код, ключевые слова и т.д.:

Значение transparent устанавливает прозрачный цвет рамки, а inherit наследует значение родителя. По умолчанию, если цвет рамки не задан, то будет использоваться тот, который используется для шрифта внутри данного элемента.

С помощью атрибутов стиля border-left-color, border-top-color, border-right-color и border-bottom-color можно задать цвет, соответственно, левой, верхней, правой и нижней сторон рамки:

И последний параметр border-style задает тип рамки:

border-style: [none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset] | inherit

Тип рамки можно указывать сразу для всех сторон элемента или только для указанных. В качестве значений можно использовать несколько ключевых слов. Вид будет зависеть от используемого браузера и толщины рамки. Значение none используется по умолчанию и не отображает рамку и ее толщина задается нулевой. Значение hidden имеет тот же эффект. Получаемая рамка для остальных значений в зависимости от толщины приведена в таблице ниже:

Источник

Оцените статью