Toate 3?: Redimensionarea responsivă a imaginilor + lățimea imaginii reale pentru imagini mici + lățime maximă pentru toate imaginile mai mari

17 iul. 2014, 13:30:54
Vizualizări: 33.4K
Voturi: 0

Ceea ce doresc să obțin este ca imaginile să se redimensioneze responsiv - și pentru asta trebuie să setez 'width: 100%' - și în același timp să setez o lățime maximă pentru a nu avea imaginea la fel de lată ca și conținutul

Pentru a face asta folosesc:

img {
    max-width: 100%;
    height: auto;
    width: 100%;        /* pentru a face imaginea responsivă */
}

#content img {
    max-width: 690px;
}

Apoi imaginea este responsivă - dar problema este că în cazul în care lățimea imaginii este mai mică de 690px, lățimea imaginii este prea mare!

Dacă folosesc doar acest cod:

img {
    max-width: 100%;
    height: auto;
}

Dimensiunea imaginii (lățime și înălțime) este corectă, dar imaginea nu este responsivă.

Cum pot obține toate cele trei?

  1. Redimensionare responsivă a dimensiunii imaginii
  2. Lățimea imaginii să fie cea reală în cazul în care lățimea reală a imaginii este mai mică de 690px
  3. Lățimea imaginii de 690px pentru toate imaginile mai mari

Aceasta este o imagine a cărei lățime reală este mai mică de 690px și unde puteți vedea problema.

Am venit cu un fel de soluție, dar deoarece este mai mult o soluție temporară decât o soluție propriu-zisă pentru problema specifică, o adaug aici.

Soluția alternativă este să folosesc un CSS diferit pentru dimensiuni mai mici ale ferestrei. Pentru ferestre mai mari, acest cod:

img {
    max-width: 100%;
    height: auto;
    width: auto;         /* Imaginea este făcută responsivă mai jos pentru ferestre mai mici (@ 800px) */
}

#content img {
    max-width: 690px;
}

Și apoi pentru ferestre mai mici:

@media only screen and (max-width: 890px) {
    img {
        width: 90%; /* pentru a face imaginea responsivă */
    }
}
1
Comentarii

.container { max-width: 900px; } img { max-width: 100%; min-width: 100%; width: auto; }

gmazzap gmazzap
17 iul. 2014 15:15:18
Toate răspunsurile la întrebare 4
6

Din linkul pe care l-ai oferit, proprietățile CSS aplicate acestei imagini sunt

#content img{ max-width:690px;}
img { width:100%;height:auto;}

De aceea imaginile mai mici se întind. Actualizează răspunsul cu:

img {
max-width: 100%;
height: auto;
width: auto;        /* pentru a face imaginea responsive */
 }
#content { max-width:690px;}

Verifică acest fiddle

17 iul. 2014 13:34:55
Comentarii

Mulțumesc pentru răspuns! Nu este exact ceea ce am menționat eu ca soluție unde "dimensiunea imaginii este corectă, dar imaginea nu este responsive"? De ce funcționează pentru tine dar nu și pentru mine – există vreun alt aspect în CSS-ul meu care creează problema..?

user2656065 user2656065
17 iul. 2014 13:45:29

1) tu primești imaginile ca fiind responsive, 2) când imaginea reală este mai mare de 690px, aceasta se reduce la 690px. Dar problema ta este că imaginile mai mici sunt întinse până la 690px.. am dreptate?? corectează-mă dacă greșesc..

Zammuuz Zammuuz
17 iul. 2014 13:48:59

Exact! Când o imagine este mai mică de 690px, aceasta se întinde până la 690px. (Ca cea pe care am dat link.) Nu știu cum să opresc imaginile mai mici să se întindă până la 690px.

user2656065 user2656065
17 iul. 2014 13:55:22

ok..uite răspunsul meu actualizat

Zammuuz Zammuuz
17 iul. 2014 13:59:52

Din păcate, această soluție nu funcționează. Dacă setezi width: auto; atunci imaginea nu se mai redimensionează.

user2656065 user2656065
17 iul. 2014 14:19:27

@user2656065: trebuie să scoți acea imagine din #content

Zammuuz Zammuuz
17 iul. 2014 14:24:02
Arată celelalte 1 comentarii
1

CSS-ul

Adaugă următorul cod în fișierul tău CSS. Asta va face imaginile scalabile în funcție de dimensiunea ecranului.

Evident, schimbă clasa dacă vrei să aplici doar pentru o clasă specifică de imagini

img{ max-width: 100%; }

img{ -ms-interpolation-mode: bicubic; }

Apoi trebuie să rulezi un filtru pentru a opri WordPress să adauge automat dimensiunile imaginilor pe care vrei să fie responsive.

  function remove_wp_width_height($string){
  return preg_replace('/\/i', '',$string);
  }

Când ai nevoie să apelezi thumbnail-ul, în template-ul tău în loc să folosești the_post_thumbnail(); folosește noua ta funcție astfel:

echo remove_wp_width_height(get_the_post_thumbnail(get_the_ID(),'large'));
18 iul. 2014 15:03:21
Comentarii

Unele dintre comentariile de sub articol par să sugereze că dacă imaginile sunt prea mici, acestea nu se vor ajusta, așa că sperăm să rezolvăm problema menținerii imaginilor mai mici neîntinse

Bysander Bysander
18 iul. 2014 15:06:05
0

Cea mai simplă metodă este să păstrezi stilurile așa cum sunt acum. Doar limitează containerul folosind pixeli sau procente.

De exemplu: Dacă limitezi containerul la dimensiunea imaginii - imaginea ta se va întinde până acolo și nu mai departe.

Dacă dimensiunea imaginii tale este de 200px - atunci, vezi mai jos setarea finală a stilului.

#content {
    max-width: 200px;
    width: 100%;
}

img {
    max-width: 100%;
    height: auto;
    width: 100%;        /* pentru a face imaginea responsivă */
}

Pentru mai multe detalii - Crearea de imagini responsive

Mulțumesc!
Sumesh M.S

18 aug. 2014 21:39:05
1

Ei bine, voi adăuga și eu părerea mea spunând că sunt un începător în utilizarea WordPress, în special pentru portofoliul meu. Am întâmpinat aceeași problemă cu imaginile responsive, unde în prototipul HTML/CSS imaginile, să zicem pentru un proiect din portofoliu, aveau dimensiuni precum "1000x650" și se scalau corespunzător. Totuși, în WordPress acest lucru nu a funcționat.

Așa că am căutat pe Google și am descoperit că soluția propusă inițial în această discuție chiar a funcționat pentru mine.

img {
    max-width: 100%;
    height: auto;
    width: 100%;        /* pentru a face imaginea responsive */
}
#content img {
    max-width: 690px;
}
12 ian. 2015 23:30:26
Comentarii

Ai văzut (și încercat) comentariul lui @G.M. la întrebarea inițială?

kaiser kaiser
13 ian. 2015 00:04:31