Czy Mogę zmienić wysokość obrazu w PSEUDOELEMENTACH CSS:before/:after?
Załóżmy, że chcę ozdobić linki do niektórych typów plików za pomocą obrazu. Mogę zadeklarować moje linki jako
<a href='foo.pdf' class='pdflink'>A File!</a>
Następnie mieć CSS jak
.pdflink:after { content: url('/images/pdf.png') }
Teraz to działa świetnie, chyba że {[2] }nie jest odpowiedni rozmiar dla mojego tekstu linku.
Chciałbym móc powiedzieć przeglądarce, aby przeskalowała :after
obraz, ale na całe życie nie mogę znaleźć odpowiedniej składni. A może to jak obrazy tła, gdzie zmiana rozmiaru po prostu nie jest możliwa?
ETA: skłaniam się ku albo a) zmiana rozmiaru obrazu źródłowego na "właściwy" rozmiar, po stronie serwera i/lub B) zmiana znaczników, aby po prostu dostarczyć znacznik IMG w linii. Próbowałem uniknąć obu tych rzeczy, ale brzmią, jakby były bardziej kompatybilne niż próbować robić rzeczy czysto z CSS. Odpowiedź na moje pierwotne pytanie brzmi: "możesz w pewnym sensie to zrobić, czasami".
14 answers
background-size
jest dozwolone. Nadal musisz jednak określić szerokość i Wysokość bloku.
.pdflink:after {
background-image: url('/images/pdf.png');
background-size: 10px 20px;
display: inline-block;
width: 10px;
height: 20px;
content:"";
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-13 17:03:21
Zauważ, że pseudoelement :after
jest ramką, która z kolei zawiera wygenerowany obraz. Nie ma sposobu na stylizację obrazu, ale możesz stylizować pudełko.
Poniżej jest tylko pomysłem, a rozwiązanie powyżej jest bardziej praktyczne.
.pdflink:after {
content: url('/images/pdf.png');
transform: scale(.5);
}
Wady: musisz znać wewnętrzne wymiary obrazu, a to pozostawia kilka białych spacji, których nie mogę się pozbyć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:27
Ponieważ moja druga odpowiedź nie była oczywiście dobrze zrozumiana, oto druga próba:
Istnieją dwa podejścia do odpowiedzi na to pytanie.Praktyczny (Pokaż mi to cholerne zdjęcie!)
Zapomnij o :after
pseudo-selektorze i wybierz coś w rodzaju
.pdflink {
min-height: 20px;
padding-right: 10px;
background-position: right bottom;
background-size: 10px 20px;
background-repeat: no-repeat;
}
Teoretyczne
Pytanie brzmi: czy możesz stylować wygenerowaną treść? Odpowiedź brzmi: Nie, Nie możesz. była długa dyskusja na liście dyskusyjnej W3C w tej sprawie, ale na razie nie ma rozwiązania.
Wygenerowana zawartość jest renderowana do wygenerowanego pudełka i możesz stylować to pudełko, ale Nie zawartość jako taka . Różne przeglądarki wykazują bardzo różne zachowania
#foo {content: url("bar.jpg"); width: 42px; height:42px;} #foo::before {content: url("bar.jpg"); width: 42px; height:42px;}
Chrome zmienia rozmiar pierwszego, ale wykorzystuje wewnętrzne wymiary obrazu dla drugiego
Firefox i ie nie obsługują pierwszego i używają wewnętrznych wymiarów dla drugi
Opera używa wewnętrznych wymiarów dla obu przypadki
(z http://lists.w3.org/Archives/Public/www-style/2011Nov/0451.html )
Podobnie, przeglądarki pokazują bardzo różne wyniki na takich rzeczach jak http://jsfiddle.net/Nwupm/1/, gdzie generowany jest więcej niż jeden element. Należy pamiętać, że CSS3 jest jeszcze na wczesnym etapie rozwoju, a ten problem nie został jeszcze rozwiązany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-24 20:49:17
Powinieneś użyć tła zamiast obrazu.
.pdflink:after {
content: "";
background-image:url(your-image-url.png);
background-size: 100% 100%;
display: inline-block;
/*size of your image*/
height: 25px;
width:25px;
/*if you want to change the position you can use margins or:*/
position:relative;
top:5px;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 11:34:16
diplay: block;
nie mają żadnego efektu
Pozycjonowanie działa również bardzo dziwnie na frontend foundamentals, więc bądź ostrożny
body:before{
content:url(https://i.imgur.com/LJvMTyw.png);
transform: scale(.3);
position: fixed;
left: 50%;
top: -6%;
background: white;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-24 00:30:21
Oto inne (działające) rozwiązanie : po prostu zmień rozmiar zdjęć do pożądanego rozmiaru:)
.pdflink:after {
display: block;
width: 20px;
height: 10px;
content:url('/images/pdf.png');
}
Potrzebujesz pdf.png ma być 20px * 10px, aby to działało. 20px/10px w css są tutaj, aby podać rozmiar bloku, aby elementy, które pojawiają się po bloku, nie były wszystkie pomieszane z obrazem
Nie zapomnij zachować kopii obrazu raw w oryginalnym rozmiarze
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-19 02:52:48
Tak, pierwotne pytanie zostało zadane osiem lat temu, ale tak naprawdę jest aktualne dzisiaj, jak zawsze. Teraz, idę z filar do postu nad tym zagadnieniem:: przed, przez około tydzień:: po, I to prowadzi mnie za zakrętem.
Z tej strony i innych na ten temat-w końcu poskładałem to do kupy i zmieściłem obrazek w pseudo tagu.
** Uwaga bieżąca .colnav jest tylko moją klasą kontenerów, która zawiera i zestaw znaczników z zestawem
Poniżej znajduje się kod (kompletny)
.colnav li.nexus-button a:hover:before { background-image: url('/images/fleur-de-lis.png'); background-size: 90px 20px; background-repeat: no-repeat; width: 130px; height: 20px; margin-left: -120px; margin-top: -3px; transform: scale(1.5); content: ""; position: absolute; }
Plik obrazu miał (jest) 120 x 80, a obraz został zredukowany do 90x 20, gdzie następnie całkiem ładnie pasował za znacznikiem html href, a wszystko to razem z tą pozycją: absolute na końcu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-29 17:23:22
.pdflink:after {
background-image: url('/images/pdf.png');
background-size: 10px 20px;
width: 10px;
height: 20px;
padding-left: 10px;// equal to width of image.
margin-left:5px;// to add some space for better look
content:"";
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-30 19:40:18
Możesz zmienić wysokość lub szerokość przed lub po w następujący sposób:
.element:after {
display: block;
content: url('your-image.png');
height: 50px; //add any value you need for height or width
width: 50px;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-17 13:34:56
Możesz użyć właściwości zoom
. Sprawdź Ten jsfiddle
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-05 15:32:38
Użyłem tej czcionki rozmiar kontroli szerokość
.home_footer1::after {
color: transparent;
background-image: url('images/icon-mail.png');
background-size: 100%;
content: ".......................................";
font-size: 30pt;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-05 18:41:30
Obecnie dzięki flexbox możesz znacznie uprościć kod i dostosować tylko 1 parametr w razie potrzeby:
.pdflink:after {
content: url('/images/pdf.png');
display: inline-flex;
width: 10px;
}
Teraz możesz po prostu dostosować szerokość elementu, a wysokość automatycznie się dostosuje, zwiększ / zmniejsz szerokość, aż Wysokość elementu będzie na wymaganej liczbie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-03 10:39:50
content: "";
background-image: url("yourimage.jpg");
background-size: 30px, 30px;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-20 08:26:08
Zamiast ustawiać szerokość i wysokość obrazu tła, można ustawić szerokość i wysokość samego elementu.
.pdflink::after {
content: '';
background-image: url(/images/pdf.png);
width: 100px;
height: 100px;
background-size: contain;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-06 11:21:06