2017-08-08 3 views
0

Hi @all!CSS: Automatische Berechnung der Breitenvariable

Sagen wir, ich habe 2 Hilfsklassen wie:

.w3-4 { 
    width: calc((100%/4) * 3); 
} 

// AND 

.mr-10 { 
    margin-right: 10px; 
} 

Glauben Sie, dass es eine automatisierte reine CSS Weg ist, den Randwert von .mr-10 auf die Breite von .w3-4 zu subtrahieren?

Etwas wie

.mr-10 { 
    margin-right: 10px; 

    // width calc 
    width: calc(--width - 10px); 
} 

Es gibt viele Möglichkeiten, dies mit SASS oder sogar JS zu tun, aber ich bin nur ein bisschen faul und neugierig :)

Vielen Dank für Ihre Antworten,

A.

Antwort

1

Sie --width Variable in allen Breitenklassen und manupulate Breite in Rand CSS erklären kann

div { 
 
    border: 1px solid; 
 
    margin-bottom: 10px; 
 
    text-align: center; 
 
} 
 
.w3-4 { 
 
    width: calc((100%/4) * 3); 
 
    --width: calc((100%/4) * 3); 
 
} 
 
.w1-2 { 
 
    width: calc(100%/2); 
 
    --width: calc(100%/2); 
 
} 
 
.w1-4 { 
 
    width: calc(100%/4); 
 
    --width: calc(100%/4); 
 
} 
 

 

 
.mr-10 { 
 
    margin-right: 10px; 
 
    width: calc(var(--width) - 10px); 
 
}
<div class="w3-4"> 
 
width 3/4 
 
</div> 
 
<div class="w1-2"> 
 
width 1/2 
 
</div> 
 
<div class="w1-4"> 
 
width 1/4 
 
</div> 
 
<div class="w3-4 mr-10"> 
 
width 3/4 with 10px margin-right 
 
</div> 
 
<div class="w1-2 mr-10"> 
 
width 1/2 with 10px margin-right 
 
</div> 
 
<div class="w1-4 mr-10"> 
 
width 1/4 with 10px margin-right 
 
</div>

+0

In Ordnung variieren! Also müssen wir die Variable deklarieren, es gibt keine '" diese Elementbreite "- 10px zum Beispiel? Aber das ist in der Nähe von dem, was ich suche, vielen Dank :) –

0

Ich glaube, Sie dies

wie tun kann
.mr-10 { 
    width: calc((100%/4) * 3 - 25px); 
} 

wo 25px Wert

+0

Ja, aber das Problem mit dieser Lösung ist, dass ich das Snippet nicht wiederverwenden kann. Ich habe mehrere Hilfsklassen wie '.w1-4',' .w2-4' usw. Ich suche nach einer DRY-Lösung, aber in einfachen CSS :) –

+0

Okay, dann müssen Sie es reparieren oder verwenden jede serverseitige Sprache, um dies zu erreichen. Server-seitige Sprache kann PHP oder jede sein, die Sie verwenden –

+0

Ich verstehe, CSS hat dieses Dienstprogramm für jetzt nicht implementiert. Eigentlich ist die Antwort von @supraja gerade oben in der Nähe von dem, was ich suche, in einfachen CSS. Noch eine überflüssige Zeile, aber ich nehme an, es gibt kein "this.width" Äquivalent in CSS noch –

Verwandte Themen