搜尋

首頁  >  問答  >  主體

如何將 CSS 濾鏡套用到背景圖片

<p>我有一個 JPEG 文件,用作搜尋頁面的背景圖像,並且我使用 CSS 來設定它,因為我在 Backbone.js 上下文中工作:</p> <pre class="brush:php;toolbar:false;">background-image: url("whatever.jpg");</pre> <p>我想<em>僅</em>對背景套用 CSS 3 模糊濾鏡,但我不確定如何只設定該元素的樣式。如果我嘗試:</p> <pre class="brush:php;toolbar:false;">-webkit-filter: blur(5px); -moz-filter: blur(5px); -o-filter: blur(5px); -ms-filter: blur(5px); filter: blur(5px);</pre> <p>就在我的 CSS 中的 <code>background-image</code> 下面,它設定了整個頁面的樣式,而不僅僅是背景。有沒有辦法只選擇影像並對其應用濾鏡?或者,有沒有辦法關閉頁面上所有其他元素的模糊? </p>
P粉675258598P粉675258598488 天前513

全部回覆(2)我來回復

  • P粉521697419

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

    消除對額外元素的需求,同時使內容適合文件流,而不是像其他解決方案那樣固定/絕對。

    使用實作

    .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>

    編輯如果您有興趣刪除邊緣的白色邊框,請使用110%的寬度和高度以及-5的左側和頂部%。這會稍微放大你的背景 - 但不應該有純色從邊緣滲入。感謝查德·福塞特的建議。

    .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>

    回覆
    0
  • P粉316423089

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

    看看這個

    您必須使用兩個不同的容器,一個用於背景映像,另一個用於您的內容。

    在範例中,我建立了兩個容器:.background-image.content

    兩者都放置為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>

    回覆
    0
  • 取消回覆