Maison > Questions et réponses > le corps du texte
P粉7040660872023-09-03 10:54:57
Tout d'abord un peu de terminologie : nous appelons la largeur de la zone couverte par le haut et le bas d'une forme SVG la "right min", et la largeur couverte au milieu la "right max".
La façon dont je comprends votre question est que la zone de droite a) a une largeur constante et b) doit toujours afficher la forme SVG complète. Il s'ensuit qu'il doit avoir une hauteur constante et un rapport hauteur/largeur de 708 : 1056. Cela facilite le calcul des dimensions requises, le plus important étant le rapport entre le minimum à droite et le maximum à droite est de 564 : 708.
Maintenant, je suggère de résoudre votre problème en déplaçant l'image de gauche comme image d'arrière-plan vers un élément de conteneur externe avec une largeur qui garantit qu'elle se trouve en dessous de la partie incurvée, c'est-à-dire. e. 100 % moins 564 px (ou fraction fixe). L'élément conteneur de gauche contenant le contenu promotionnel a une largeur de 100 % moins 708 px, et le conteneur de droite a une largeur de 708 px (ou une fraction fixe). (Pour plus de simplicité, les conteneurs sont identifiés par des noms de classe qui correspondent aux noms de leurs composants)
.container {
display: flex;
flex-direction: row;
justify-items: stretch;
align-items: stretch;
height: 523px;
background-image: linear-gradient(360deg, white, red);
background-position: top right 282px;
background-size: cover;
background-repeat: no-repeat;
}
.container-left {
flex-grow: 1;
}
.container-right {
width: 354px;
background-image: url('data:image/svg+xml,<svg viewBox="0 0 708 1056" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M144.5 0H799.5V1056H144.5L23.4254 775.169C0.402533 721.768 -5.09917 662.442 7.71089 605.718L144.5 0Z" fill="%2316979A"/></svg>');
background-size: 100% 100%;
}
.child {
box-sizing: border-box;
height: 100%;
margin: 2px;
border: 2px solid blue;
}
<div class="container">
<div class="container-left">
<div class="child"></div>
</div>
<div class="container-right">
<div class="child"></div>
</div>
</div>
Vous pouvez utiliser d'autres valeurs de taille px tant que vous conservez la proportion entre elles.
Si vous ne souhaitez pas afficher le SVG complet, mais souhaitez simplement vous assurer que la courbe de gauche reste entièrement visible, ajoutez l'attribut suivant à l'élément racine
preserveAspectRatio="xMinYMid slice"
Cela aura le même effet que CSS cover
相同的效果,而且 viewBox
cover lors de la modification des proportions du conteneur de droite, et la zone de la
Si vous suivez cette voie, n'oubliez pas que si vous définissez une hauteur fixe à l'avance, vous ne connaissez que la largeur de la zone entre les côtés droits maximum et minimum. CSS ne peut pas utiliser la hauteur d'un élément pour calculer une valeur de largeur. 🎜