Css box-sizing property


JS Array concat() constructor copyWithin() entries() every() fill() filter() find() findIndex() forEach() from() includes() indexOf() isArray() join() keys() length lastIndexOf() map() pop() prototype push() reduce() reduceRight() reverse() shift() slice() some() sort() splice() toString() unshift() valueOf()

JS Boolean constructor prototype toString() valueOf()

JS Classes constructor() extends static super

JS Date constructor getDate() getDay() getFullYear() getHours() getMilliseconds() getMinutes() getMonth() getSeconds() getTime() getTimezoneOffset() getUTCDate() getUTCDay() getUTCFullYear() getUTCHours() getUTCMilliseconds() getUTCMinutes() getUTCMonth() getUTCSeconds() now() parse() prototype setDate() setFullYear() setHours() setMilliseconds() setMinutes() setMonth() setSeconds() setTime() setUTCDate() setUTCFullYear() setUTCHours() setUTCMilliseconds() setUTCMinutes() setUTCMonth() setUTCSeconds() toDateString() toISOString() toJSON() toLocaleDateString() toLocaleTimeString() toLocaleString() toString() toTimeString() toUTCString() UTC() valueOf()

JS Error name message

JS Global decodeURI() decodeURIComponent() encodeURI() encodeURIComponent() escape() eval() Infinity isFinite() isNaN() NaN Number() parseFloat() parseInt() String() undefined unescape()

JS JSON parse() stringify()

JS Math abs() acos() acosh() asin() asinh() atan() atan2() atanh() cbrt() ceil() cos() cosh() E exp() floor() LN2 LN10 log() LOG2E LOG10E max() min() PI pow() random() round() sin() sqrt() SQRT1_2 SQRT2 tan() tanh() trunc()

JS Number constructor isFinite() isInteger() isNaN() isSafeInteger() MAX_VALUE MIN_VALUE NEGATIVE_INFINITY NaN POSITIVE_INFINITY prototype toExponential() toFixed() toLocaleString() toPrecision() toString() valueOf()

JS OperatorsJS RegExp constructor compile() exec() g global i ignoreCase lastIndex m multiline n+ n* n? n{X} n{X,Y} n{X,} n$ ^n ?=n ?!n source test() toString() (x|y) . \w \W \d \D \s \S \b \B \0 \n \f \r \t \v \xxx \xdd \uxxxx

JS Statements break class continue debugger do…while for for…in for…of function if…else return switch throw try…catch var while

JS String charAt() charCodeAt() concat() constructor endsWith() fromCharCode() includes() indexOf() lastIndexOf() length localeCompare() match() prototype repeat() replace() search() slice() split() startsWith() substr() substring() toLocaleLowerCase() toLocaleUpperCase() toLowerCase() toString() toUpperCase() trim() valueOf()

Thick Borders

The w3-topbar, w3-bottombar, w3-leftbar, and w3-rightbar classes are used to add thick borders to an element:

I have a thick left border.

I have a thick blue left border.

I have a thick blue left border and a pale-blue background color.


<div class=»w3-panel w3-leftbar»>  <p>I have a thick left border.</p> </div><div class=»w3-panel w3-leftbar w3-border-blue»>   <p>I have a thick blue left border.</p> </div><div class=»w3-panel w3-leftbar w3-border-blue w3-pale-blue»>   <p>I have a thick blue left border and a pale-blue background color.</p> </div> <div class=»w3-panel w3-topbar w3-bottombar w3-border-red w3-pale-red»>   <p>I have a thick red top and bottom border and a pale-red background color.</p> </div>

CSS border-image Property

The CSS property allows you to specify an image to be used instead of the normal border around an element.

The property has three parts:

  1. The image to use as the border
  2. Where to slice the image
  3. Define whether the middle sections should be repeated or stretched

We will use the following image (called «border.png»):

The property takes the image and slices it into nine sections, like a tic-tac-toe board. It then places the corners at the corners, and the middle sections are repeated or stretched as you specify.

Note: For to work, the element also needs the property set!

Here, the middle sections of the image are repeated to create the border:

An image as a border!

Here is the code:


#borderimg {   border: 10px solid transparent;  padding: 15px;  border-image: url(border.png) 30 round;}

Here, the middle sections of the image are stretched to create the border:

An image as a border!

Here is the code:


#borderimg {   border: 10px solid transparent;  padding: 15px;  border-image: url(border.png) 30 stretch;}

Tip: The property is actually a shorthand property for the , , , and properties.

W3.CSS Border Classes

W3.CSS provides the following border classes:

Class Defines
w3-border Adds borders (top, right, bottom, left) to an element
w3-border-top Adds a top border to an element
w3-border-right Adds a right border to an element
w3-border-bottom Adds a bottom border to an element
w3-border-left Adds a left border to an element
w3-border-0 Removes all borders
w3-border-color Displays the border in a specified color (like red, blue, etc)
w3-hover-border-color Adds a hoverable border color
w3-bottombar Adds a thick bottom border to an element
w3-leftbar Adds a thick left border to an element
w3-rightbar Adds a thick right border to an element
w3-topbar Adds a thick top border to an element

All CSS Border Properties

Property Description
border Sets all the border properties in one declaration
border-bottom Sets all the bottom border properties in one declaration
border-bottom-color Sets the color of the bottom border
border-bottom-style Sets the style of the bottom border
border-bottom-width Sets the width of the bottom border
border-color Sets the color of the four borders
border-left Sets all the left border properties in one declaration
border-left-color Sets the color of the left border
border-left-style Sets the style of the left border
border-left-width Sets the width of the left border
border-radius Sets all the four border-*-radius properties for rounded corners
border-right Sets all the right border properties in one declaration
border-right-color Sets the color of the right border
border-right-style Sets the style of the right border
border-right-width Sets the width of the right border
border-style Sets the style of the four borders
border-top Sets all the top border properties in one declaration
border-top-color Sets the color of the top border
border-top-style Sets the style of the top border
border-top-width Sets the width of the top border
border-width Sets the width of the four borders

CSS border-image — Different Slice Values

Different slice values completely changes the look of the border:

Example 1:

border-image: url(border.png) 50 round;

Example 2:

border-image: url(border.png) 20% round;

Example 3:

border-image: url(border.png) 30% round;

Here is the code:


#borderimg1 {  border: 10px solid transparent;  padding: 15px;  border-image: url(border.png) 50 round;}#borderimg2 {  border: 10px solid transparent;  padding: 15px;  border-image: url(border.png) 20% round;} #borderimg3 {  border: 10px solid transparent;  padding: 15px;  border-image: url(border.png) 30% round;}

Property Description
border-image A shorthand property for setting all the border-image-* properties
border-image-source Specifies the path to the image to be used as a border
border-image-slice Specifies how to slice the border image
border-image-width Specifies the widths of the border image
border-image-outset Specifies the amount by which the border image area extends beyond the border box
border-image-repeat Specifies whether the border image should be repeated, rounded or stretched

Hoverable Borders

The w3-hover-border-color classes change the color of the border on mouse-over:

Border that turns red on hover.

Red border that turns green on hover.


<div class=»w3-panel w3-border w3-hover-border-red»>   <p>Border that turns red on hover</p> </div> <div class=»w3-panel w3-border w3-border-red w3-hover-border-green»>   <p>Red border that turns green on hover</p> </div>

Thick (invisible) left border that turns green on hover.


<div class=»w3-panel w3-leftbar w3-border-white w3-hover-border-green»>   <p>Thick (invisible) left border that turns green on hover.</p> </div><div class=»w3-panel w3-bottombar w3-border-white w3-hover-border-green»>   <p>Thick (invisible) bottom border that turns green on hover.</p> </div>

Thick white (invisible) border that turns green on hover.

Thick white (invisible) border that turns black on hover.


<div style=»border:16px solid white» class=»w3-panel w3-hover-border-green»>  <p>Thick (invisible) border that turns green on hover.</p></div> <div style=»border:16px solid white» class=»w3-panel w3-hover-border-black»>  <p>Thick (invisible) border that turns black on hover.</p></div>

Width and Height of an Element

In order to set the width and height of an element correctly in all browsers, you need to know how the box model works.

Important: When you set the width and height properties of an element with CSS, you just set the width and height of the content area. To calculate the full size of an element, you must also add padding, borders and margins.


This <div> element will have a total width of 350px: 

div {  width: 320px;   padding: 10px;   border: 5px solid gray;   margin: 0; }

Here is the calculation:

320px (width) + 20px (left + right padding) + 10px (left + right border) + 0px (left + right margin)= 350px

The total width of an element should be calculated like this:

Total element width = width + left padding + right padding + left border + right border + left margin + right margin

The total height of an element should be calculated like this:

Total element height = height + top padding + bottom padding + top border + bottom border + top margin + bottom margin

With the box-sizing

Both divs are the same size! Wohoo!

Since the box model created many issues for developers, the CSS3 introduced the box-sizing.

CSS makes sure that the total width and height of elements include padding and borders. As a result, elements do not appear bigger than they should be.

Theory is great, but we recommend digging deeper!

Learn Web Design: The Ultimate Guide For Beginners


4.3 (3,222)


CSS is the most popular choice for setting . It guarantees that the content box shrinks to make space for the padding and borders.

Therefore, if you set your element width to 200 pixels, makes sure that the content, padding, and borders fit in this number.

In this example,  is added to both <div> elements:

Example Copy

You do not need to set this property for each element individually. Instead, use the asterisk (*) selector to select all elements.

In this example, we apply the  to all elements in an HTML document:

Example Copy

If you set the width of the element to 200 pixels, the item will appear bigger once you add padding and borders.

Результаты опроса#

Прошла неделя с того дня, как я создал опрос об использовании . За это время форму заполнили 256 человек. Результаты оказались такими:

Используете или будете использовать ? Да Нет
В текущем личном проекте 71% 29%
В будущем личном проекте 88% 12%
В будущем командном проекте 85% 15%
В будущем «публичном» проекте 60% 40%

В приведённой таблице под «командным проектом» понимается проект, в котором разработчики знакомы с человеком, принимающем решение об использовании модели  — например, группа разработчиков в одной компании или группа друзей, с которыми вы близко общаетесь в ходе работы. Под «публичным проектом» понимается проект, в котором разработчиком может быть кто угодно, с кем вы, вероятно, не можете лично согласовать выбор модели — проект с открытым исходным кодом или публичное API.

Хотя это не окончательные результаты голосования, есть признаки того, что разработчики комфортно чувствуют себя при использовании модели (или планируют её использовать) и рады использовать ее в «командных проектах». Меня немного удивило количество разработчиков, уже использующих эту модель. Число разработчиков, предпочитающих применять модель в «публичных проектах» ниже, но все равно на 20% выше, чем число тех, кто не планирует этого делать. Если результаты опроса что-то значат, не удивляйтесь, если встретите все больше проектов, использующих модель, формально считающуюся неправильной.

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

Многие обратили внимание, что использование может нарушить работу некоторых jQuery-плагинов, и это способно ограничить применимость модели на сайтах, активно использующих jQuery. Другие сообщили, что применяли бы эту модель, если бы она была документирована, как это было с KSS-комментариями (это хороший подход при работе в команде или даже в личных проектах, если вам требуется затем поддерживать собственный код)

Я оставлю опрос открытым в надежде собрать больше ответов. Но поскольку соотношение результатов в составило 60 к 40 в течение недели, я не жду, что результат значительно изменится.

CSS Properties


С этим читают