tracez des lignes diagonales dans le div de fond avec les CSS
J'ai un div pour la zone d'aperçu de la
HTML:
<div class="preview-content">PREVIEW</div>
CSS:
.preview-content {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGklEQVQIW2NkYGD4D8SMQAwGcAY2AbBKDBUAVuYCBQPd34sAAAAASUVORK5CYII=) repeat;
width: 100%;
min-height: 300px;
max-height: 300px;
line-height: 300px;
text-align: center;
vertical-align: middle;
font-size: 2em;
}
Q: comment faire pour ajouter des lignes diagonales à div arrière-plan comme dans l'image
remarque: avec CSS si possible
Je vous remercie à l'avance
- Voulez-vous simplement à ajouter deux lignes?
- oui, seulement 2 comme dans l'image
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire quelque chose comme ceci:
Ici est un jsfiddle.
Version améliorée de réponse pour votre but.
width: 100%;
-webkit-transform
ne fonctionne que sur les navigateurs basés sur WebKit. Je suggère de préciser la norme W3Ctransform
règle comme première étape, puis de spécifier d'autres spécifiques à un navigateur règle, par exemple-webkit-transform
,-moz-transform
,-ms-transform
,-o-transform
.Presque parfait solution, qui s'adapte automatiquement aux dimensions d'un élément serait l'utilisation de CSS3 linear-gradient connecté avec calc() comme indiqué ci-dessous. Le principal inconvénient est bien sûr de la compatibilité. Le Code ci-dessous fonctionne dans Firefox 25 et Explorer 10 et 11, mais dans Chrome (j'ai testé v30 et v32 dev) il y a quelques problèmes subtils avec des lignes de disparaître si elles sont trop étroites. D'ailleurs en train de disparaître dépend des dimensions de la boite de style ci-dessous fonctionne pour
div { width: 100px; height: 100px}
, mais échoue pourdiv { width: 200px; height: 200px}
pour laquelle, dans mes tests,0.8px
dans les calculs doit être remplacé au moins1.1048507095px
pour les diagonales d'être montré et même alors, la ligne de la qualité de rendu est assez pauvre. Espérons que ce n'est Chrome bug sera résolu bientôt.CSS:
HTML:
Vous pouvez utiliser SVG pour dessiner les lignes.
CSS:
HTML:
Avoir un jeu ici: http://jsfiddle.net/tyw7vkvm
Toutes les autres réponses à cette enfant de 3 ans nécessitent CSS3 (ou SVG). Cependant, il peut également être fait avec rien, mais la lame vieux CSS2:
CSS:
HTML:
Explication, comme l'a demandé:
Plutôt que de réellement dessin de lignes diagonales, il m'est apparu que nous le pouvons, au lieu de la couleur de la soi-disant espace négatif triangles adjacents à l'endroit où nous voulons voir ces lignes. Le truc, je suis venu pour accomplir cette exploite le fait que le multi-couleur CSS frontières sont biseautés en diagonale:
CSS:
HTML:
Pour rendre les choses s'adapter à la façon dont nous voulons, nous choisissons intérieure d'un rectangle avec des dimensions 0 et LINE_THICKNESS pixels, et une autre avec ces dimensions inversée:
CSS:
HTML:
Enfin, l'utilisation de la
:before
et:after
pseudo-sélecteurs et la position relative/absolue comme un moyen sympa pour insérer les frontières de ces deux rectangles l'un sur l'autre dans votre élément HTML de choix, pour produire une croix diagonale. Veuillez noter que les résultats probablement mieux avec un mince LINE_THICKNESS valeur, tels que 1px.width: 100%
dediv
à traverser 😉 Cependant, pour être juste, les devinettes de accepté de répondre, on dirait qu'elle n'était pas absolument nécessaire.Veuillez vérifier les points suivants.
JS:
CSS:
jsfiddle
width: 100%;
afin boîte flottante, donc je ne peux pas écrire les coordonnées permanente en jsvous pouvez utiliser un CSS3 Propriété transform:
Xdeg = votre valeur
Par exemple...
Vous pouvez faire plus de div et de l'utilisation d'une propriété z-index.
Donc,faire une div avec la ligne, et le faire pivoter.
Si vous souhaitez la croix pour être partiellement transparente, l'approche naïve serait de faire
linear-gradient
couleurs semi-transparentes. Mais qui ne fonctionne pas bien en raison de l'alpha à l'intersection, la production d'une couleur différente de diamant. La solution à cela est de laisser les couleurs solides, mais ajouter de la transparence à l'dégradé contenant plutôt:CSS:
HTML:
intrepidis réponse sur cette page à l'aide d'un fond de SVG dans le CSS a l'avantage de la mise à l'échelle joliment quelle que soit la taille ou l'aspect ratio, si le SVG utilise
<path>
s avec un fond qui n'est pas si bien.J'ai juste mis à jour le code SVG à utiliser
<line>
au lieu de<path>
et a ajouténon-scaling-stroke
vecteur effet pour prévenir les coups de pinceau de mise à l'échelle avec le conteneur:Voici qui a chuté dans le CSS de l'original de la réponse (avec HTML effectuées redimensionnable):
CSS:
HTML:
CSS:
HTML: