Sök…


Syntax

  • marginal: <övre & höger & nedre & vänster> ;
  • marginal: <top> , <vänster & höger> , <bottom> ;
  • marginal: <övre och nedre> , <vänster & höger> ;
  • marginal: <topp> , <rätt> , <botom> , <vänster> ;
  • margin-top: <top> ;
  • marginal-höger: <rätt> ;
  • marginalbotten: <bottom> ;
  • marginal-vänster: <vänster> ;

parametrar

Parameter detaljer
0 sätta marginal till ingen
bil används för centrering, genom att jämnt ställa in värden på varje sida
enheter (t.ex. px) se parameteravsnitt i Enheter för en lista med giltiga enheter
ärva ärva marginalvärde från moderelementet
första återställa till initialvärde

Anmärkningar

Mer om "Sammanföra marginaler": här .

Applicera marginal på en given sida

Riktningspecifika egenskaper

Med CSS kan du ange en given sida att tillämpa marginal på. De fyra egenskaperna som tillhandahålls för detta ändamål är:

  • margin-left
  • margin-right
  • margin-top
  • margin-bottom

Följande kod skulle tillämpa en marginal på 30 pixlar på vänster sida av den valda div. Visa resultat

html

<div id="myDiv"></div>

CSS

#myDiv {
    margin-left: 30px;
    height: 40px;
    width: 40px;
    background-color: red;
}
Parameter detaljer
margin-vänster Riktningen i vilken marginalen ska tillämpas.
30px Marginalens bredd.

Ange riktning med hjälp av korta egenskaper

Standard margin egenskap kan expanderas för att ange olika bredder på varje sida av de valda elementen. Syntaxen för att göra detta är följande:

margin: <top> <right> <bottom> <left>;

Följande exempel gäller en nollbreddmarginal till toppen av div, en 10px marginal till höger sida, en 50px marginal till vänster sida och en 100px marginal till vänster sida. Visa resultat

html

<div id="myDiv"></div>

CSS

#myDiv {
    margin: 0 10px 50px 100px;
    height: 40px;
    width: 40px;
    background-color: red;
}

Marginal kollapsar

När två marginaler berör varandra vertikalt kollapsas de. När två marginaler berör horisontellt kollapsar de inte.

Exempel på intilliggande vertikala marginaler:

Tänk på följande stilar och markering:

div{
    margin: 10px;
}
<div>
    some content
</div>
<div>
    some more content
</div>

De kommer att vara 10px från varandra eftersom vertikala marginaler kollapsar över ett och annat. (Avståndet är inte summan av två marginaler.)

Exempel på intilliggande horisontella marginaler:

Tänk på följande stilar och markering:

span{
    margin: 10px;
}
<span>some</span><span>content</span>

De kommer att vara 20px från varandra eftersom horisontella marginaler inte kollapsar över det ena och det andra. (Avståndet är summan av två marginaler.)

Överlappande med olika storlekar

.top{
    margin: 10px;
}
.bottom{
    margin: 15px;
}
<div class="top">
    some content
</div>
<div class="bottom">
    some more content
</div>

Dessa element kommer att vara 15px åtskilda vertikalt. Marginalerna överlappar så mycket de kan, men den större marginalen bestämmer avståndet mellan elementen.

Överlappande marginal gotcha

.outer-top{
    margin: 10px;
}
.inner-top{
    margin: 15px;
}
.outer-bottom{
    margin: 20px;
}
.inner-bottom{
    margin: 25px;
}
<div class="outer-top">
    <div class="inner-top">
        some content
    </div>
</div>
<div class="outer-bottom">
    <div class="inner-bottom">
        some more content
    </div>
</div>

Vilket är avståndet mellan de två texterna? (håll muspekaren för att se svaret)

Avståndet är 25px. Eftersom alla fyra marginaler berör varandra kommer de att kollapsa och därmed använda den största marginalen av de fyra.

Vad sägs nu om vi lägger till några gränser till markeringen ovan.

div{
    border: 1px solid red;
}

Vilket är avståndet mellan de två texterna? (håll muspekaren för att se svaret)

Avståndet blir 59px! Nu är det bara marginalerna för .outer-top och .outer-botten som berör varandra och är de enda kollapsade marginalerna. De återstående marginalerna är separerade av gränserna. Så vi har 1px + 10px + 1px + 15px + 20 px + 1 px + 25 px + 1 px (1px är gränserna ...)

Samla marginaler mellan förälder och barnelement:

HTML:

<h1>Title</h1>
<div>
  <p>Paragraph</p>
</div>

CSS

h1 {
  margin: 0;
  background: #cff;
}
div {
  margin: 50px 0 0 0;
  background: #cfc;
}
p {
  margin: 25px 0 0 0;
  background: #cf9;
}

I exemplet ovan gäller endast den största marginalen. Du kanske har förväntat dig att avsnittet skulle vara beläget 60px från h1 (eftersom div-elementet har en marginal-topp på 40px och p har en 20px marginal-top). Detta händer inte eftersom marginalerna kollapsar ihop och bildar en marginal.

Centrera element horisontellt på en sida med marginal

Så länge elementet är ett block , och det har ett uttryckligt inställt breddvärde , kan marginaler användas för att centrera blockelement på en sida horisontellt.

Vi lägger till ett breddvärde som är lägre än bredden på fönstret och den automatiska egenskapen för marginal fördelar sedan återstående utrymme till vänster och höger:

#myDiv {
 width:80%;
 margin:0 auto;
}

I exemplet ovan använder vi den korta margin att först sätta 0 till värdena för övre och nedre marginal (även om detta kan vara vilket värde som helst) och sedan använder vi auto att låta webbläsaren tilldela utrymmet automatiskt till vänster- och högermarginalvärden.

I exemplet ovan är #myDiv-elementet inställt på 80% bredd vilket ger 20% rester. Webbläsaren distribuerar detta värde till de återstående sidorna så:

(100% - 80%) / 2 = 10%

Förenkling av marginalfastigheter

p {
    margin:1px;                /* 1px margin in all directions */
    
    /*equals to:*/
    
    margin:1px 1px;
    
    /*equals to:*/
    
    margin:1px 1px 1px;
    
    /*equals to:*/
    
    margin:1px 1px 1px 1px;
}

En annan exapmle:

p{
    margin:10px 15px;        /* 10px margin-top & bottom And 15px margin-right & left*/
    
    /*equals to:*/
    
    margin:10px 15px 10px 15px;
    
    /*equals to:*/
    
    margin:10px 15px 10px;
    /* margin left will be calculated from the margin right value (=15px) */
}

Negativa marginaler

Margin är en av få CSS-egenskaper som kan ställas in på negativa värden. Den här egenskapen kan användas för att överlappa element utan absolut positionering .

div{
  display: inline;
}

#over{
  margin-left: -20px;
}

<div>Base div</div>
<div id="over">Overlapping div</div>

Exempel 1:

Det är uppenbart att anta att det procentuella värdet för marginal till margin-left och margin-right skulle vara relativt dess överordnade element.

.parent {
    width : 500px;
    height: 300px;
}

.child {
    width : 100px;
    height: 100px;
    margin-left: 10%;  /* (parentWidth * 10/100) => 50px */
}

Men det är inte fallet när det gäller margin-top och margin-bottom . Båda dessa egenskaper, i procent, är inte i förhållande till höjden på överordnad behållare utan bredden på överordnad behållare.

Så,

.parent {
    width : 500px;
    height: 300px;
}

.child {
    width : 100px;
    height: 100px;
    margin-left: 10%;  /* (parentWidth * 10/100) => 50px  */
    margin-top: 20%;   /* (parentWidth * 20/100) => 100px */
}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow