Problem z pozycją kursora wejściowego HTML w Chrome, gdy wartość jest pusta

Niedawno zauważyłem, że wejścia tekstowe mają problem z wyświetlaniem w Google Chrome, ale tylko wtedy, gdy tekst jest pusty.

Zauważ, że na górnym obrazku, gdy wejście jest puste, kursor jest zbyt wysoki wewnątrz wprowadzania tekstu.

Problem z kursorem w Chrome

Ale jak wpiszemy jakiś tekst to się poprawi:

Wprowadzanie hasła

JSFiddle do zilustrowania. Może wymagać wersji Google Chrome: 38.0.2125.101 m

HTML:

<input name="tb_password" type="password" id="tb_password" class=" validate[required,custom[password]]" placeholder="Type your password here" autocomplete="off" style="
    margin: 0;
    line-height: 46px;
">

CSS:

input[type="text"], input[type="password"] {
width: 100%;
height: 46px;
line-height: 46px;
font-size: 11pt;
color: #555 !important;
text-indent: 15px;
border-top: solid 1px #c5c5c5;
border-left: solid 1px #c5c5c5;
border-bottom: solid 1px #dadada;
border-right: solid 1px #dadada;
background: #fff;
-webkit-box-shadow: inset 0px 1px 5px 0px rgba(0, 0, 0, .1);
box-shadow: inset 0px 1px 5px 0px rgba(0, 0, 0, .1);
}
Author: Le-roy Staines, 2014-10-09

8 answers

Przyczyna:

Wygląda na to, że to błąd regresji w silniku Chromium 38. Mogę odtworzyć w Chrome 38.* i Opera 25.* (który wykorzystuje Chrom 38).

Zgłoszone błędy:

Jak zauważył @JackieChiles, wydaje się, że jest to regresja tego [zamkniętego jako obselete] błędu: https://code.google.com/p/chromium/issues/detail?id=47284

Zgodnie z sugestią w zamkniętym błędzie, zalogowałem nowy. https://code.google.com/p/chromium/issues/detail?id=426802&thanks=426802&ts=1414143535

I odnoszą się również do innego zgłoszonego błędu, który wydaje się podkreślać ten sam błąd, ale nie definiuje dokładnego problemu w ogólny sposób. https://code.google.com/p/chromium/issues/detail?id=394664

Obejście:

Jak opisano w innych odpowiedziach powyżej, obejście problemu polega na unikaniu atrybutu line-height opartego na pikselach. Na przykład Zamiana line-height:50px na line-height:1em lub line-height:100% przyniesie więcej oczekiwanych zachowań.

 35
Author: Le-roy Staines,
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-10-24 09:52:49

Dodanie line-height:100% wydaje się naprawić problem dla nas:

Http://jsfiddle.net/ddjj9wxc/

 8
Author: strada,
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-10-19 22:07:21

Sugeruję nie używać line-height w ogóle, może to nie jest właściwa odpowiedź, ale działa dla mnie (najnowszy chrome)

Updated fiddle http://jsfiddle.net/efgq1svz/11/

 6
Author: Manjunath Siddappa,
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-10-14 05:48:30

Zmiana stylu CSS na wprowadzanym tekście z line-height: 46px na line-height: 1em rozwiązuje problem; jednak nie jestem pewien dlaczego.

 0
Author: Le-roy Staines,
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-10-09 04:52:48

Jest jeszcze jeden hack, o którym nikt nie wspomniał, jak widzę. Możesz użyć zapytania @media, aby sprawdzić Chrome:

@media screen and (-webkit-min-device-pixel-ratio: 0) {
    line-height: normal;
}
 0
Author: Simon,
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-07 16:31:22

Napotkałem podobny problem. Ale stwierdziłem, że lepiej jest użyć liczby dla line-height zamiast długości (px, em lub rem). Może za pomocą poniższego kodu rozwiązać ten problem:

input[type="text"] {
  height: 46px;
  line-height: 1.1;
}

Plus, być może powyższy css musi być sparowany z -webkit-appaearance: none dla pożądanego efektu renderowania. W każdym razie, to mi pasuje.

 0
Author: lute,
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-20 16:14:14

W 2012 roku zrobiłem aplikację internetową HTML5 canvas i użyłem właściwości CSS3, aby zmienić pozycję kursora podczas używania obrazu jako kursora:

#canvas { cursor: url(../image/pen_red_ff0000.gif)0 20, auto; }

To działało przez wiele miesięcy przy rozwijaniu mojego projektu Na Firefox, Chrome / Chromium i innych przeglądarkach, ale od co najmniej Chrome 38, Zmiana pozycji kursora została zignorowana. Używam wersji Chromium Ubuntu i dzisiaj zaktualizowałem do Chromium 40 i błąd jest nadal tutaj nawet po ponownym uruchomieniu i usunięciu".config / chromium".

The wersja z pakietów Ubuntu to" wersja 40.0.2214.94 Ubuntu 14.04 (64-bit)", ale kilka dni temu wypróbowałem najnowszą oficjalną wersję Chromium Linux " Wersja 42.0.2287.0 (64-bit)" z https://download-chromium.appspot.com / i błąd się nie pojawił.

Moja aplikacja jest tutaj http://drawcode.eu/projects/connect-points/ , trzeba łączyć punkty, ale na Chromium z Ubuntu muszę kliknąć 20 pikseli pod środkiem punktów. To kwestia pozycji kursora, więc myślę, że mój problem jest związany z tym wątkiem.

Czy ktoś może potwierdzić posiadanie Buga i wiedzieć od kiedy jest naprawdę naprawiony? Zauważ, że Najnowszy oficjalny Chromium, który pobrałem, to wersja 42 (nie stabilna). Mój Chromium 40 z Ubuntu nadal ma błąd, ale @ Salmonface powiedział, że został naprawiony w wersji 40 problem z pozycją kursora HTML w Chrome, gdy wartość jest pusta

Edit: na Debianie też miałem ten błąd z Chromium 37 (Nie 38)! Błąd jest nadal tutaj na Chrome beta (wersja 41). Oto Skrzypce http://jsfiddle.net/baptx/L0fmvs7a/

Edit 2: w rzeczywistości błąd pozycji kursora CSS3 pojawił się w Chromium 25 (https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/171003/) i wydaje się, że stała w chromie 42 (https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/313000/), możesz sam wypróbować moją aplikację HTML5 canvas i zobaczyć, że pozycja kursora CSS3 jest źle. Od Chromium 25 do Chromium 36 (testowane z developer build 261001), The Fiddle I shared działa, ale przeglądarka pozwala wybrać tekst na div z dobrą lub złą pozycją kursora. Od Chromium 37 (testowane z developer build 271001) do Chromium 41, nie można zaznaczać tekstu z dobrą pozycją kursora na skrzypcach.

Błąd nie jest tylko platformą GNU/Linux, pojawia się również na maszynie wirtualnej Windows 8.

 0
Author: baptx,
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-03-23 22:07:50

Miałem ten sam problem, ale tylko na IOS 8.1, więc może moje rozwiązanie komuś pomoże. Problem pochodził ze znacznika div, który ustawił właściwość transform CSS. Rozwiązuję problem za pomocą następującego kodu:

#your-parent-div {
    -webkit-transform: none;
    -moz-transform: none;
    -o-transform: none;
}
 0
Author: user3168585,
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-04-03 13:50:13