J'essaie de créer un arrière-plan en utilisant CSS où un côté est une couleur unie et l'autre est une texture: les deux sont séparés par une ligne diagonale. Je voudrais que ce soit 2 divs séparés car je prévois d'ajouter du mouvement avec jQuery où si vous cliquez à droite, le triangle gris devient plus petit et si vous cliquez à gauche le triangle texturé devient plus petit (comme un effet de rideau). Tout avis serait grandement apprécié.
Voici les exemples en action: http://jsbin.com/iqemot/1/edit
Vous pouvez modifier le placement de la ligne diagonale avec les pixels de bordure. Avec cette approche, vous devrez cependant positionner le contenu sur la configuration d'arrière-plan.
#container {
height: 100px;
width: 100px;
overflow: hidden;
background-image: url(http://www.webdesign.org/img_articles/14881/site-background-pattern-07.jpg);
}
#triangle-topleft {
width: 0;
height: 0;
border-top: 100px solid gray;
border-right: 100px solid transparent;
}
<div id="container">
<div id="triangle-topleft"></div>
</div>
Je pense que l'utilisation d'un dégradé de fond avec une transition difficile est une solution très propre:
.diagonal-split-background{
background-color: #013A6B;
background-image: -webkit-linear-gradient(30deg, #013A6B 50%, #004E95 50%);
}
Pour ce genre de chose, vous pouvez utiliser des pseudo-sélecteurs tels que :before
ou :after
dans votre CSS pour minimiser le balisage HTML inutile.
<div id="container"></div>
#container {
position: relative;
height: 200px;
width: 200px;
overflow: hidden;
background-color: grey;
}
#container:before {
content: '';
position: absolute;
left: 20%;
width: 100%;
height: 200%;
background-color: rgb(255, 255, 255); /* fallback */
background-color: rgba(255, 255, 255, 0.5);
top: 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
transform: rotate(45deg);
}
J'ai ensuite essayé de faire en sorte que chaque section puisse se développer en fonction de l'endroit où vous avez cliqué. Cela nécessite malheureusement un peu de jQuery supplémentaire car la position de votre clic (par rapport à la boîte) doit être déterminée.
Une classe est ensuite ajoutée à la case qui modifie le :before
pseudo-objet. L'avantage d'utiliser une classe est que les animations CSS sont mieux optimisées pour le navigateur que celles jQuery.
en utilisant jQuery comment obtenir les coordonnées de clic sur l'élément cible