Maison  >  Questions et réponses  >  le corps du texte

Comment appliquer des filtres CSS aux images d'arrière-plan

<p>J'ai un fichier JPEG que j'utilise comme image d'arrière-plan pour ma page de recherche et j'utilise CSS pour le définir car je travaille dans un contexte Backbone.js : </p> <pre class="brush:php;toolbar:false;">image d'arrière-plan : url("whatever.jpg");</pre> <p>Je souhaite<em>appliquer un filtre de flou CSS 3 uniquement</em>à l'arrière-plan, mais je ne sais pas comment styliser uniquement cet élément. Si j'essaye : </p> <pre class="brush:php;toolbar:false;">-webkit-filter: flou(5px); -moz-filter : flou (5px); -o-filtre : flou (5px); -ms-filter : flou (5px); filtre : flou (5px);</pre> <p>Juste en dessous de <code>background-image</code> dans mon CSS, il stylise la page entière, pas seulement l'arrière-plan. Existe-t-il un moyen de simplement sélectionner l'image et de lui appliquer un filtre ? Alternativement, existe-t-il un moyen de désactiver le flou pour tous les autres éléments de la page ? </p>
P粉675258598P粉675258598444 Il y a quelques jours476

répondre à tous(2)je répondrai

  • P粉521697419

    P粉5216974192023-08-24 12:52:20

    Stylo

    Élimine le besoin d'éléments supplémentaires tout en intégrant le contenu dans le flux du document plutôt que d'être fixe/absolu comme d'autres solutions.

    Utiliser la mise en œuvre

    .content {
      /* this is needed or the background will be offset by a few pixels at the top */
      overflow: auto;
      position: relative;
    }
    
    .content::before {
      content: "";
      position: fixed;
      left: 0;
      right: 0;
      z-index: -1;
    
      display: block;
      background-image: url('https://i.imgur.com/lL6tQfy.png');
      background-size:cover;
      width: 100%;
      height: 100%;
    
      -webkit-filter: blur(5px);
      -moz-filter: blur(5px);
      -o-filter: blur(5px);
      -ms-filter: blur(5px);
      filter: blur(5px);
    }
    <div class="content">
    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.
    </div>

    Modifier Si vous souhaitez supprimer la bordure blanche sur les bords, utilisez 110% pour la largeur et la hauteur et -5 pour le % gauche et supérieur. Cela agrandira légèrement votre arrière-plan, mais il ne devrait pas y avoir de couleur unie qui dépasse sur les bords. Merci à Chad Fawcett pour la suggestion.

    .content {
      /* this is needed or the background will be offset by a few pixels at the top */
      overflow: auto;
      position: relative;
    }
    
    .content::before {
      content: "";
      position: fixed;
      top: -5%;
      left: -5%;
      right: -5%;
      z-index: -1;
    
      display: block;
      background-image: url('https://i.imgur.com/lL6tQfy.png');
      background-size:cover;
      width: 110%;
      height: 110%;
    
      -webkit-filter: blur(5px);
      -moz-filter: blur(5px);
      -o-filter: blur(5px);
      -ms-filter: blur(5px);
      filter: blur(5px);
    }
    <div class="content">
    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.
    </div>

    répondre
    0
  • P粉316423089

    P粉3164230892023-08-24 10:25:04

    Regardez ce stylo.

    Vous devez utiliser deux conteneurs différents, un pour l'image d'arrière-plan et un autre pour votre contenu.

    Dans l'exemple, j'ai créé deux conteneurs : .background-image.content.

    Les deux sont placés avec des valeurs position:fixedleft:0;右:0;。显示它们的差异来自于为元素设置不同的 z-index.

    .background-image {
      position: fixed;
      left: 0;
      right: 0;
      z-index: 1;
      display: block;
      background-image: url('https://i.imgur.com/lL6tQfy.png');
      width: 1200px;
      height: 800px;
      -webkit-filter: blur(5px);
      -moz-filter: blur(5px);
      -o-filter: blur(5px);
      -ms-filter: blur(5px);
      filter: blur(5px);
    }
    
    .content {
      position: fixed;
      left: 0;
      right: 0;
      z-index: 9999;
      margin-left: 20px;
      margin-right: 20px;
    }
    <div class="background-image"></div>
    <div class="content">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquam erat in ante malesuada, facilisis semper nulla semper. Phasellus sapien neque, faucibus in malesuada quis, lacinia et libero. Sed sed turpis tellus. Etiam ac aliquam tortor, eleifend
        rhoncus metus. Ut turpis massa, sollicitudin sit amet molestie a, posuere sit amet nisl. Mauris tincidunt cursus posuere. Nam commodo libero quis lacus sodales, nec feugiat ante posuere. Donec pulvinar auctor commodo. Donec egestas diam ut mi adipiscing,
        quis lacinia mauris condimentum. Quisque quis odio venenatis, venenatis nisi a, vehicula ipsum. Etiam at nisl eu felis vulputate porta.</p>
      <p>Fusce ut placerat eros. Aliquam consequat in augue sed convallis. Donec orci urna, tincidunt vel dui at, elementum semper dolor. Donec tincidunt risus sed magna dictum, quis luctus metus volutpat. Donec accumsan et nunc vulputate accumsan. Vestibulum
        tempor, erat in mattis fringilla, elit urna ornare nunc, vel pretium elit sem quis orci. Vivamus condimentum dictum tempor. Nam at est ante. Sed lobortis et lorem in sagittis. In suscipit in est et vehicula.</p>
    </div>

    répondre
    0
  • Annulerrépondre