javascript – So zentrieren Sie das img-Element in einem div, wie im folgenden Beispiel gezeigt
给我你的怀抱
给我你的怀抱 2017-05-16 13:21:39
0
13
1741

Html-Code

<style>
    p {
        overflow: hidden ;
    }
    img {
        height: 100% ;
        width: auto ;
    }
</style>

<p>
    <img src='//foo.com/foo.jpg' />
</p>

Beispielbild des gewünschten Effekts

Der rote Bereich ist p, der grüne Bereich ist img

Mit anderen Worten, das Bild ist breiter

Die Breite des Bildes ist nicht festgelegt, daher kann das Problem nicht durch Festlegen des linken Rands behoben werden

  • Gefragt am 20. April
  • 2 Kommentar
  • Zur Beantwortung einladen
  • bearbeiten

Standardsortierung Zeitsortierung

13 Antworten

3

Es gibt eine Möglichkeit, aber anstatt das img-Tag zu verwenden, fügen Sie ein Hintergrundbild zu p hinzu.

p {
    background-image: url(image-url);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
}

    Beantwortet am 20. April
  • Kommentar
  • Bearbeiten

227 Ruf

1

Bildrand links positionieren: - (Breite/2) Da die Breite von img nicht festgelegt ist, kann sie mit js abgerufen und dann marginleft dynamisch festgelegt werden

  • Beantwortet am 20. April
  • Kommentar
  • Bearbeiten

Betrachten Sie die Welt mit kalten Augen177 Reputation

1

Eine weitere Schicht einwickeln.

<p id="wrapper">
    <p id="wrapper2">
        <img src="demo_img3.jpg" alt="" />
    </p>
</p>
#wrapper{
    position: relative;
    width: 200px;
    height: 200px;
}
#wrapper2{
    position: absolute;
    left: 50%;
}
img{
    margin-left: -50%;
}

wrapper2的宽度是img宽度。imgmargin-left就等于自身宽的一半,相当于left:-50%*width

    Beantwortet am 20. April
  • · Aktualisiert am 20. April
  • 2 Kommentar
  • Bearbeiten

4,9k Reputation

1

img ist ein Inline-Block-Element und kann direkt auf der übergeordneten Ebene textausgerichtet werden: center;

  • Beantwortet am 3. Mai
  • Kommentar
  • Bearbeiten

hugangqiang117 Ruf

1

Tatsächlich möchten wir den Effekt der horizontalen Zentrierung erzielen. Hier sind vier Methoden, um eine horizontale Zentrierung zu erreichen (Hinweis: In jedem Beispiel unten wird die Ausrichtungsoperation des untergeordneten Elements implementiert, und der übergeordnete Container des untergeordneten Elements ist das übergeordnete Element)

Erreicht mit Inline-Block und Text-Alignment

.parent{
    text-align: center;
}
.child{
    display: inline-block;
}

Vorteile: gute Kompatibilität;


Nachteile: Untergeordnete Elemente und übergeordnete Elemente müssen gleichzeitig festgelegt werden

Verwenden Sie margin:0 auto, um dies zu erreichen

.child{
    width:200px;
    margin:0 auto;
}

Vorteile: Gute Kompatibilität


Nachteile: Angabe der Breite erforderlich

Verwenden Sie die Tabelle zur Implementierung

.child{
    display:table;
    margin:0 auto;
}

Vorteile: Sie müssen sich nur selbst einrichten


Nachteile: IE6 und 7 müssen die Struktur anpassen

Verwenden Sie die absolute Positionierung, um das zu erreichen

.parent{
    position:relative;
}
.child{
    position:absolute;
    left:50%;
    transform:translate(-50%);
}

Nachteile: schlechte Kompatibilität, verfügbar für IE9 und höher

Praktische Flex-Layout-Implementierung

Die erste Methode

.parent{
    display:flex;    
    justify-content:center;
}

Die zweite Methode

.parent{
    display:flex;
}
.child{
    margin:0 auto;
}

Nachteile: schlechte Kompatibilität, bei großflächiger Auslegung kann es zu Effizienzeinbußen kommen

    Beantwortet am 5. Mai
  • Kommentar
  • Bearbeiten

yogi27 Ruf

0

Wrap p außerhalb. Wenn img.onload, berechnet js die Breite und weist sie der äußeren Ebene zu. Zentrieren Sie den äußeren Inhalt

    Beantwortet am 21. April
  • Kommentar
  • Bearbeiten

16 Ruf

0

Geben Sie p zuerst eine position:relative;

und geben Sie dann img ein {

position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);

}

Wenn es nicht mit c3 kompatibel ist, können Sie img geben{

position: absolute;
left: 0;
top: 0;
bottom:0;
right:0;
margin:auto;

}

  • Beantwortet am 21. April
  • Kommentar
  • Bearbeiten

clownzoo11 Ruf

0

1

img{
    display: block;
    margin: 0 auto;
}

2

p{
    text-align: center;
    
    img{
         display: inline-block;
    }
}

3

p{
    position: relative;
    
    img{
        position: absolute;
        left: 50%;
        top: 50%;
        margin: -(图片高度/2) 0 0 -(图片宽度/2)
    }
}

4 Flex verwenden

    Beantwortet am 21. April
  • · Aktualisiert am 21. April
  • Kommentar
  • Bearbeiten

227 Ruf

0

Eine Schicht P auf der Außenseite und eine Schicht P auf der Innenseite, um die Größe des Bildes zu begrenzen

  • Beantwortet am 3. Mai
  • Kommentar
  • Bearbeiten

Fujinishi22 Ruf

0

Sie können einen Blick darauf werfen, wenn Sie keine Kompatibilitätsprobleme haben

object-fit

    Beantwortet am 3. Mai
  • Kommentar
  • Bearbeiten

865 Ruf

0

给我你的怀抱
给我你的怀抱

Antworte allen(13)
黄舟

有一个办法,但不是用img标签,而是给p加background-image.

p {
    background-image: url(image-url);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
}
仅有的幸福

定位啊 图片 marginleft:-(width/2) 至于img的宽度不固定 完全可以js获取 然后动态设置marginleft

Peter_Zhu

再包一层。

<p id="wrapper">
    <p id="wrapper2">
        <img src="demo_img3.jpg" alt="" />
    </p>
</p>
#wrapper{
    position: relative;
    width: 200px;
    height: 200px;
}
#wrapper2{
    position: absolute;
    left: 50%;
}
img{
    margin-left: -50%;
}

wrapper2的宽度是img宽度。imgmargin-left就等于自身宽的一半,相当于left:-50%*width

洪涛

img是inline-block元素,可以在父级直接text-align: center;

刘奇

其实就是想达到水平居中的效果,下面介绍四种实现水平居中的方法(注:下面各个实例中实现的是child元素的对齐操作,child元素的父容器是parent元素)

使用inline-block 和 text-align实现

.parent{
    text-align: center;
}
.child{
    display: inline-block;
}

优点:兼容性好;

不足:需要同时设置子元素和父元素

使用margin:0 auto来实现

.child{
    width:200px;
    margin:0 auto;
}

优点:兼容性好

缺点: 需要指定宽度

使用table实现

.child{
    display:table;
    margin:0 auto;
}

优点:只需要对自身进行设置

不足:IE6,7需要调整结构

使用绝对定位实现

.parent{
    position:relative;
}
.child{
    position:absolute;
    left:50%;
    transform:translate(-50%);
}

不足:兼容性差,IE9及以上可用

实用flex布局实现

第一种方法

.parent{
    display:flex;    
    justify-content:center;
}

第二种方法

.parent{
    display:flex;
}
.child{
    margin:0 auto;
}

缺点:兼容性差,如果进行大面积的布局可能会影响效率

过去多啦不再A梦

外面包裹p,在img.onload时,js算出宽度赋给外层。让外层的内容居中

Ty80

先给p一个 position:relative;
然后给img一个{

position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);

}
如果不兼容c3,可以给img{

position: absolute;
left: 0;
top: 0;
bottom:0;
right:0;
margin:auto;

}

仅有的幸福

1

img{
    display: block;
    margin: 0 auto;
}

2

p{
    text-align: center;
    
    img{
         display: inline-block;
    }
}

3

p{
    position: relative;
    
    img{
        position: absolute;
        left: 50%;
        top: 50%;
        margin: -(图片高度/2) 0 0 -(图片宽度/2)
    }
}

4 用flex

淡淡烟草味

外面一层p,里面一层p限制图片的尺寸

巴扎黑

不考虑兼容问题可以看看 object-fit

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage