2017-07-04 4 views
5

Ist es möglich, einen diagonalen Strich zu erzielen, mit einem bisschen Offset in jeder Seite. Ich habe eine Variation davon mit css linear-gradient gesehen, aber ich brauche etwas anderes. Ich kann nicht beschreiben, was ich genau in Worten brauche. Ich werde Bilder verwenden.CSS-Farbbereiche diagonal getaucht

enter image description here

enter image description here

Ich habe mit Steigungen versucht zu spielen:

.diagonal{ 
 
    background-color: #34ADFF; 
 
    background-image: linear-gradient(to right top, whitesmoke 50%, #34ADFF 50%); 
 
    height: 300px; 
 
}
<div class="diagonal"> 
 
</div>

Das ist, wie weit ich gegangen bin. Ich denke daran, mit Kindern zu spielen, aber ich bin mir noch nicht sicher.

Irgendwelche Ideen?

Ich möchte keine Bilder verwenden, ich möchte nur CSS verwenden.

+0

haben Sie versucht, CSS Maske für das? ODER wahrscheinlich mit Canvas. Nur ein Vorschlag. – raju

+0

In der Tat ist es schwer zu verstehen, was Sie wirklich von diesem Bild brauchen. Meinst du sowas wie https://codepen.io/maxverleye/pen/ItDis? Clips sind nett, aber wirklich nicht genug unterstützt .. Vielleicht wird dir das helfen: https://www.viget.com/articles/angled-edges-with-css-masks-and-transforms – Kiwad

+0

@Kiwad MDN sagt Clips sind veraltet. Der erste Link, den du gepostet hast, könnte funktionieren. Wenn Sie sich den Code anschauen, den ich eingefügt habe, werden die Farben von der oberen linken Ecke in die untere rechte Ecke zusammengeführt. Im Grunde brauche ich das gleiche, aber mit dem oberen linken Strich beginnt etwas weiter unten sein ursprünglicher Startpunkt. Hoffnung, die Sinn macht. –

Antwort

0

Ich bin in der Lage, das gewünschte Ergebnis mit dem folgenden linear gradient zu erhalten:

linear-gradient(6deg, transparent 73%, rgba(50, 87, 106, 0.72) 27%); 

Sie die Form sehr leicht steuern kann.

der erste Parameter oder linear-gradient(6deg...steuert den Grad der Schrägstellung - die Lage der Trennlinie Sie negative Werte als auch

Die Steuer Prozent nach jeder der Farben verwendet werden können.

Wenn die Zahlen nicht zu 100% summieren, wird der Teiler unscharf.

Ich habe einen Bildhintergrund und background-blend-mode:overlay; im Beispiel unten für Demozwecke hinzugefügt.

body { 
 
    text-align: center; 
 
} 
 

 
.test { 
 
    height: 400px; 
 
    width: 500px; 
 
    margin: 0 auto; 
 
    display: inline-block; 
 
    background: url(https://unsplash.it/500/400), linear-gradient(6deg, transparent 73%, rgba(50, 87, 106, 0.72) 27%); 
 
    background-blend-mode:overlay; 
 
}
<div class="test"></div>

+0

In der Tat, Sie haz kode @I haz kode Ich denke, das ist es! –

+0

@AndresZapata Kein Problem, glücklich zu helfen –

0

Eine extrem unsophisticated Demo transform: rotate()

rotateZ() Die CSS-Funktion definiert eine Transformation, die das Element um die z-Achse bewegt, ohne es zu verformen. Die Größe der Bewegung wird durch den angegebenen Winkel definiert. Wenn positiv, wird die Bewegung im Uhrzeigersinn, wenn negativ, wird es gegen den Uhrzeigersinn sein.

Der Arbeits Inhalt Ihrer schrägen Behälter würde sorgfältige Platzierung erfordern, und es gibt einige mögliche Positionierung Probleme, aber mit Mühe, ich denke, das funktionieren könnte.

body { 
 
    background: lightgray; 
 
    margin: 0; 
 
    height: 300vh; 
 
} 
 
header, footer { 
 
    position: fixed; 
 
    height: 20vh; 
 
    width: 120vw; 
 
    left: -10vw; 
 
    overflow: hidden; 
 
} 
 
header { 
 
    background: lightblue; 
 
    top: -6vh; 
 
} 
 
footer { 
 
    background: lightgreen; 
 
    bottom: -6vh; 
 
} 
 
footer, 
 
header p { 
 
    transform: rotateZ(-3deg); 
 
} 
 
header, 
 
footer p { 
 
    transform: rotateZ(3deg); 
 
}
<header> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
 
</header> 
 
<footer> 
 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
 
</footer>

+0

das kann funktionieren, danke! –

+0

Gern geschehen. Nicht zu schäbig für 4:30 Uhr ;-) –

0

Sie könnten versuchen, einen separaten div für die Sache linear-gradient

.diagonal-top { 
 
    background-image: linear-gradient(to left top, whitesmoke 50%, #34ADFF 50%); 
 
    height: 20px; 
 
} 
 
.diagonal-bottom { 
 
    background-image: linear-gradient(to right top, #34ADFF 50%, whitesmoke 50%); 
 
    height: 40px; 
 
} 
 

 
.header { 
 
    height: 30px; 
 
    background-color: #34ADFF; 
 
} 
 

 
.footer { 
 
    height: 50px; 
 
    background-color: #34ADFF; 
 
} 
 

 
.clearfix { 
 
    height: 30px; 
 
    background-color: whitesmoke; 
 
}
<div class="header"></div> 
 
<div class="diagonal-top"></div> 
 
<div class="clearfix"></div> 
 
<div class="diagonal-bottom"></div> 
 
<div class="footer"></div>

+0

Hey @Matias Cerrotta netter! Ich denke, das könnte auch funktionieren =) –

+0

Großartig! Du solltest ein wenig mit den 'height's spielen –

0

Ok also hier ist verwenden. Dies muss reaktionsfähig und in der Lage sein, sich im Laufe der Zeit zu entwickeln, also suchte ich nach einer besseren Lösung und hier ist was ich found. Um es ein wenig zu vereinfachen, ist hier ein Auszug:

.se-container { 
 
    display: block; 
 
    width: 100%; 
 
    overflow: hidden; 
 
    padding-top: 100px; 
 
} 
 

 
.se-slope { 
 
    margin: 0 -50px; 
 
    transform-origin: left center; 
 
} 
 

 
.se-slope:nth-child(odd) { 
 
    background: url(http://lorempixel.com/400/200/); 
 
    background-size: cover; 
 
    transform: rotate(5deg); 
 
    margin-top: -200px; 
 
    box-shadow: 0px -1px 3px rgba(0, 0, 0, 0.4); 
 
} 
 

 
.se-slope:nth-child(even) { 
 
    background: linear-gradient(to right, purple 0%, red 100%); 
 
    transform: rotate(-5deg); 
 
    box-shadow: 0px 2px 3px rgba(0, 0, 0, 0.4) inset; 
 
} 
 

 
.se-content { 
 
    margin: 0 auto; 
 
} 
 

 
.se-content p { 
 
    width: 75%; 
 
    max-width: 500px; 
 
    margin: 0 auto; 
 
    font-size: 18px; 
 
    line-height: 24px; 
 
} 
 

 
.se-slope:nth-child(odd) .se-content { 
 
    transform: rotate(-5deg); 
 
    padding: 130px 100px 250px 100px; 
 
} 
 

 
.se-slope:nth-child(even) .se-content { 
 
    transform: rotate(5deg); 
 
    padding: 150px 100px 250px 100px; 
 
}
<section class="se-container"> 
 
    <div class="se-slope"> 
 
    <article class="se-content"> 
 
     <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Nullam id dolor id nibh ultricies vehicula ut id elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p> 
 
    </article> 
 
    </div> 
 
    <div class="se-slope"> 
 
    <article class="se-content"> 
 
     <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Nullam id dolor id nibh ultricies vehicula ut id elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p> 
 
    </article> 
 
    </div> 
 
    <div class="se-slope"> 
 
    <article class="se-content"> 
 
     <p>Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Nullam id dolor id nibh ultricies vehicula ut id elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p> 
 
    </article> 
 
    </div> 
 
</section>