欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何讓div高度自動調整到背景尺寸?

傅智翔2年前10瀏覽0評論

我如何讓一個div自動調整到我為它設置的背景尺寸,而不用為它設置一個特定的高度(或最小高度)?

有一個很好很酷的方法可以讓背景圖片像img元素一樣自動調整高度。你需要知道圖像的寬高比。將容器的高度設置為0,并根據圖像比例將填充頂部設置為百分比。

它將如下所示:

div {
    background-image: url('http://www.pets4homes.co.uk/images/articles/1111/large/feline-influenza-all-about-cat-flu-5239fffd61ddf.jpg');
    background-size: contain;
    background-repeat: no-repeat;
    width: 100%;
    height: 0;
    padding-top: 66.64%; /* (img-height / img-width * container-width) */
                /* (853 / 1280 * 100) */
}

你只是得到了一個自動高度的背景圖像,就像一個img元素。這是一個工作原型(你可以調整大小和檢查div的高度):http://jsfiddle.net/8m9ur5qj/

另一個可能效率不高的解決方案是將圖像包含在設置為visibility: hidden的img元素下;。然后使周圍div的背景圖像與圖像相同。

這將把周圍的div設置為img元素中圖像的大小,但將其顯示為背景。

<div style="background-image: url(http://your-image.jpg);">
 <img src="http://your-image.jpg" style="visibility: hidden;" />
</div>

使用CSS無法自動調整背景圖像的大小。

正如其他人提到的,您可以通過測量服務器上的背景圖像,然后將這些屬性應用到div來解決這個問題。

您還可以編寫一些javascript來根據圖像大小調整div的大小(一旦圖像下載完畢)——這基本上是一回事。

如果您需要您的div來自動適應圖像,我可能會問為什么不直接放一個& ltimg & gt標簽在你的div里面?

這個答案與其他答案相似,但總體上是大多數應用程序的最佳答案。你需要事先知道圖像的大小,這是你通常會做的。這將讓您添加覆蓋文本,標題等。沒有圖像的負填充或絕對定位。關鍵是設置填充百分比來匹配圖像的縱橫比,如下例所示。我用了這個答案,基本上只是添加了一個圖像背景。

.wrapper {
  width: 100%;
  /* whatever width you want */
  display: inline-block;
  position: relative;
  background-size: contain;
  background: url('https://upload.wikimedia.org/wikipedia/en/thumb/6/67/Wiki-llama.jpg/1600px-Wiki-llama.jpg') top center no-repeat;
  margin: 0 auto;
}
.wrapper:after {
  padding-top: 75%;
  /* this llama image is 800x600 so set the padding top % to match 600/800 = .75 */
  display: block;
  content: '';
}
.main {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
  color: black;
  text-align: center;
  margin-top: 5%;
}

<div class="wrapper">
  <div class="main">
    This is where your overlay content goes, titles, text, buttons, etc.
  </div>
</div>

我看了一些解決方案,它們都很棒,但我想我找到了一個出乎意料的簡單方法。

首先,我們需要從背景圖像中獲取比例。我們只是通過一個維度來劃分另一個維度。然后我們得到66.4%這樣的數據

當我們有圖像比率時,我們可以簡單地通過將比率乘以視口寬度來計算div的高度:

height: calc(0.664 * 100vw);

對我來說,它能正常工作,正確設置div高度,并在調整窗口大小時改變它。

也許這能有所幫助,這不是確切的背景,但你得到的想法:

<style>
div {
    float: left;
    position: relative;
}
div img {
    position: relative;
}

div div {
    position: absolute;
    top:0;
    left:0;
}
</style>

<div>
    <img src="http://antwrp.gsfc.nasa.gov/apod/image/0903/omegacen_davis.jpg" />
    <div>Hi there</div>
</div>

我很確定這在這里永遠不會被看到。但是如果你的問題和我的一樣,這就是我的解決方案:

.imaged-container{
  background-image:url('<%= asset_path("landing-page.png") %> ');
  background-repeat: no-repeat;
  background-size: 100%;
  height: 65vw;
}

我想在圖像的中心有一個div,這將允許我這樣做。

有一個純CSS的解決方案,其他答案都漏掉了。

“content:”屬性主要用于將文本內容插入到元素中,但也可以用于插入圖像內容。

.my-div:before {
    content: url("image.png");
}

這將導致div將其高度調整為圖像的實際像素大小。要調整寬度,請添加:

.my-div {
    display: inline-block;
}

最近引入的CSS長寬比屬性(~2020-2021)是一種很好的方式,它不需要填充hacks,并且在所有evergreen瀏覽器上都受支持。

因為我們需要提前知道圖像的長寬比,并且在許多用例中,您可以提前預先確定圖像的尺寸比(但并不總是針對用戶生成的內容),所以您可以硬編碼一個樣式,或者在必要時內聯css。

當指定寬度時,aspect-ratio將根據提供的比率計算高度(如果指定了高度,則計算寬度)。

div {
    /*common ratio, like an 800*600px image */
    aspect-ratio: 3 / 2;
    /* computed height will be 133.33px, which is width/aspect-ratio */
    width: 200px;
    /* red BG for debugging so any image bleed is shown*/
    background: red; 
    background-image: url('https://images.unsplash.com/photo-1631163190830-8770a0ad4aa9?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=200&q=80');
}

<div></div>

您可以在服務器端完成:通過測量圖像,然后設置div大小,或者用JS加載圖像,讀取它的屬性,然后設置DIV大小。

這里有一個想法,把同樣的圖像作為IMG標簽放在div中,但是給它可見性:隱藏+玩相對位置+給這個div圖像作為背景。

我有這個問題,并找到了Hasanavi的答案,但我在寬屏上顯示背景圖像時遇到了一個小問題-背景圖像沒有擴展到整個屏幕寬度。

這是我的解決方案——基于Hasanavi的代碼,但更好...這應該適用于超寬屏幕和移動屏幕。

/*WIDE SCREEN SUPPORT*/
@media screen and (min-width: 769px) { 
    div {
        background-image: url('http://www.pets4homes.co.uk/images/articles/1111/large/feline-influenza-all-about-cat-flu-5239fffd61ddf.jpg');
        background-size: cover;
        background-repeat: no-repeat;
        width: 100%;
        height: 0;
        padding-top: 66.64%; /* (img-height / img-width * container-width) */
                    /* (853 / 1280 * 100) */
    }
}

/*MOBILE SUPPORT*/
@media screen and (max-width: 768px) {
    div {
        background-image: url('http://www.pets4homes.co.uk/images/articles/1111/large/feline-influenza-all-about-cat-flu-5239fffd61ddf.jpg');
        background-size: contain;
        background-repeat: no-repeat;
        width: 100%;
        height: 0;
        padding-top: 66.64%; /* (img-height / img-width * container-width) */
                    /* (853 / 1280 * 100) */
    }
}

您可能已經注意到,background-size:contain;屬性不適合超寬屏幕,背景大小:封面;屬性不太適合移動屏幕,所以我使用這個@media屬性來調整屏幕大小并解決這個問題。

這對我很有效:

background-image: url("/assets/image_complete_path");
background-position: center; /* Center the image */
background-repeat: no-repeat; /* Do not repeat the image */
background-size: cover;
height: 100%;

如果它是一個單獨的預先確定的背景圖像,并且您希望div能夠響應而不扭曲背景圖像的縱橫比,您可以首先計算圖像的縱橫比,然后通過執行以下操作創建一個保留其縱橫比的div:

假設您想要4/1的縱橫比,并且div的寬度是32%:

div {
  width: 32%; 
  padding-bottom: 8%; 
}

這是因為填充是根據包含元素的寬度計算的。

添加到原始接受的答案只是添加樣式寬度:100%;到內部圖像,這樣它會自動縮小/擴大移動設備,不會在移動視圖中占用大量的頂部或底部邊距。

<div style="background-image: url(http://your-image.jpg);background-position:center;background-repeat:no-repeat;background-size: contain;height: auto;">
 <img src="http://your-image.jpg" style="visibility: hidden; width: 100%;" />
</div>

這個怎么樣:)

.fixed-centered-covers-entire-page{
    margin:auto;
    background-image: url('https://i.imgur.com/Ljd0YBi.jpg');
    background-repeat: no-repeat;background-size:cover;
    background-position: 50%;
    background-color: #fff;
    left:0;
    right:0;
    top:0;
    bottom:0;
    z-index:-1;
    position:fixed;
}

<div class="fixed-centered-covers-entire-page"></div>

我將做相反的操作,將圖像放在主div中,寬度為100%,這將使div和圖像都響應屏幕大小,

然后將內容添加到一個絕對定位的div中,其寬度和高度是主div的100%。

<div class="main" style="position: relative; width: 100%;">
    <img src="your_image.png" style="width: 100%;">
    <div style="position: absolute; width: 100%; height: 100%; display: flex...">
            YOUR CONTENT
    </div>
</div>

這可能會有所幫助,它不是一個確切的背景,但你得到了簡單的想法

<style>
div {
    float: left;
    position: relative;
}
div img {
    position: relative;
}

div div {
    position: absolute;
    top:0;
    left:0;
}
</style>

<div>
    <img src="http://www.planwallpaper.com/static/images/recycled_texture_background_by_sandeep_m-d6aeau9_PZ9chud.jpg" />
    <div>Hello</div>
</div>

你可以做類似的事情

<div style="background-image: url(http://your-image.jpg); position:relative;">
 <img src="http://your-image.jpg" style="opacity: 0;" />
<div style="position: absolute;top: 0;width: 100%;height: 100%;">my content goes here</div>
</div>

如果您知道構建時圖像的比例,想要基于窗口高度的高度,并且您可以使用現代瀏覽器(IE9+),那么您可以為此使用視口單位:

.width-ratio-of-height {
  overflow-x: scroll;
  height: 100vh;
  width: 500vh; /* width here is 5x height */
  background-image: url("http://placehold.it/5000x1000");
  background-size: cover;
}

不完全是OP所問的,但可能很適合許多看到這個問題的人,所以想在這里給出另一個選擇。

小提琴:https://jsfiddle.net/6Lkzdnge/

假設你有這樣的東西:

<div class="content">
    ... // inner HTML
</div>

你想給它添加一個背景,但是你不知道圖像的尺寸。

我也遇到過類似的問題,我通過使用grid解決了它:

超文本標記語言

<div class="outer">
    <div class="content">
        ... // inner HTML
    </div>
    <img class="background" />
</div>

半鑄鋼?鋼性鑄鐵(Cast Semi-Steel)

.outer{
    display: grid;
    grid-template: auto / auto;
    // or you can assign a name for this block
}
.content{
    grid-area: 1 / 1 / 2 / 2;
    z-index: 2;
}
.background{
    grid-area: 1 / 1 / 2 / 2;
    z-index: 1;
}

z-index實際上只是用于將圖像放在背景上,當然你可以將img.background放在div.content上面。

注意:這可能會導致div.content與圖片具有相同的高度,因此如果div.content有任何子元素根據其高度放置,您可能需要設置一個數字,而不是類似“auto”的數字。

受到最喜歡的答案的啟發,我最終想出了一個使用最小高度和“大眾”單位的解決方案

我有一張比例非常不尋常的照片

通過實驗,我最終使用了

min-height: 36vw;

該值必須根據圖像的比例進行更改

我的實際頁面中使用的css代碼:

background:url('your-background-image-adress') center center no-repeat;
    background-size: 100%;
    background-position: top center;
    margin-top: 50px;
    width: 100%;
    min-height: 36vw;

代碼筆示例https://codepen.io/viniciusrad/pen/GRNPXoL

在Umbraco CMS上有這個問題,在這種情況下,您可以為div的“style”屬性添加圖像,如下所示:

style="background: url('@(image.mediaItem.Image.umbracoFile)') no-repeat scroll 0 0 transparent; height: @(image.mediaItem.Image.umbracoHeight)px"

我處理這個問題已經有一段時間了,決定寫一個jquery插件來解決這個問題。 這個插件將找到所有帶有類“show-bg”的元素(或者你可以傳遞給它你自己的選擇器),并計算它們的背景圖像尺寸。 您所要做的就是包含這段代碼,用class="show

盡情享受吧!

https://bitbucket.org/tomeralmog/jquery.heightfrombg

我能想到的最好的解決方法是用百分比來指定你的寬度和高度。這將允許您根據顯示器的大小重新調整屏幕大小。它的布局更具響應性..

舉個例子。 你有

<br/>
<div> . //This you set the width percent to %100
    <div> //This you set the width percent to any amount . if you put it by 50% , it will be half
    </div>
 </div>

如果你想要一個響應性的布局,這是最好的選擇,我不推薦浮動,在某些情況下浮動是可以使用的。但是在大多數情況下,我們避免使用float,因為當你進行跨瀏覽器測試時,它會影響很多事情。

希望這有所幫助:)

如果圖像高度可以變化,或者如果您不知道圖像的確切高度,那么使用一點jquery和css就可以解決這個問題:

超文本標記語言

<div class="bg-cover" style="background-image:url(https://i.imgur.com/Ljd0YBi.jpg);"></div>

JQUERY

<script>
var image_url = $('.bg-cover').css('background-image'),
image;

// Remove url() or in case of Chrome url("")
image_url = image_url.match(/^url\("?(.+?)"?\)$/);

if (image_url[1]) {
image_url = image_url[1];
image = new Image();

// just in case it is not already loaded
$(image).load(function() {
//alert(image.width + 'x' + image.height);
$('.bg-cover').css('min-height', image.height);
});

image.src = image_url;
}
</script>

為了設置& quot空& quot容器元素與其背景圖像的大小對齊,您只需執行一個小的ratio計算并相應地設置高度。

例如:

假設背景圖像尺寸為1920x600。

寬度和高度之比為3.2 (1920 / 600)。

下一步是根據當前視圖寬度設置包含背景圖像的容器元素的高度:

div.container {
width: 100vw;    
height: calc(100vw / 3.2)
}

因此,例如,如果當前視圖寬度為1600像素,高度將為500像素,背景圖像將正好適合,高度也將正好合適。

實際上,當你知道如何做時,這很容易:

<section data-speed='.618' data-type='background' style='background: url(someUrl) 
top center no-repeat fixed;  width: 100%; height: 40vw;'>
<div style='width: 100%; height: 40vw;'>
</div>
</section>

訣竅是將封閉的div設置為普通的div,其尺寸值與背景尺寸值相同(在本例中,100%和40vw)。

我用jQuery解決了這個問題。直到新的CSS規則允許這種類型的行為,我發現這是最好的方法。

設置您的div

下面是您希望背景出現的div(“hero”),然后是您希望覆蓋在背景圖像之上的內部內容/文本(“inner”)。你可以(也應該)將內聯樣式移動到你的英雄類中。我把它們放在這里,這樣就可以很快很容易地看到應用了什么樣式。

<div class="hero" style="background-image: url('your-image.png'); background-size: 100%; background-repeat: no-repeat; width: 100%;">
    <div class="inner">overlay content</div>
</div>

計算圖像縱橫比

接下來,通過用圖像的高度除以寬度來計算圖像的長寬比。例如,如果你的圖像高度是660,寬度是1280,那么你的長寬比為0.5156。

設置一個jQuery窗口調整大小事件來調整高度

最后,添加一個用于調整窗口大小的jQuery事件偵聽器,然后根據縱橫比計算hero div的高度并更新它。這種解決方案通常會在底部留下一個額外的像素,因為使用縱橫比的計算不完美,所以我們在結果大小上加-1。

$(window).on("resize", function ()
{
    var aspect_ratio = .5156; /* or whatever yours is */
    var new_hero_height = ($(window).width()*aspect_ratio) - 1;
    $(".hero").height(new_hero_height);
}

確保它在頁面加載時工作

您應該在頁面加載時執行上面的resize調用,以便在開始時計算圖像大小。如果不這樣做,那么hero div不會調整,直到你調整窗口的大小。我設置了一個單獨的函數來調整大小。這是我使用的完整代碼。

function updateHeroDiv()
{
    var aspect_ratio = .5156; /* or whatever yours is */
    var new_hero_height = ($(window).width()*aspect_ratio) - 1;
    $(".hero").height(new_hero_height);
}

$(document).ready(function() 
{       
    // calls the function on page load
    updateHeroDiv(); 

    // calls the function on window resize
    $(window).on("resize", function ()
    {
        updateHeroDiv();        
    }
});

如果你可以在Photoshop上制作一個圖像,其中主圖層的不透明度為1左右,基本上是透明的,那么就把那個img放在div中,然后把真實的圖片作為背景圖像。然后設置img的不透明度為1,添加你想要的尺寸。

那張圖片就是這樣做的,你甚至不能把看不見的圖像從頁面上拽下來,這很酷。

只需添加到div

style="overflow:hidden;"