Safari / Chrome metin girişi / textarea ışımayı kaldırma


337

CSS kullanarak bir metin giriş / metin alanına tıkladığımda varsayılan mavi ve sarı parlaklığı kaldırmak mümkün mü merak ediyorum?


6
@Steve, devre dışı bırakmanın bir başka nedeni de, ışıma efektinin tüm tarayıcılarda kötü desteklenen anahat stili yerine: focus kullanarak çalışmasını istiyorsanız.
Langdon

90
İnsanlar teknik bir soru olduğunda bir şeyin "yapılacak doğru şey" olup olmadığı konusunda felsefi bir sohbete başlaması gerçekten sinir bozucu.
tim

2
Çevrimiçi bir e-tablo hazırlıyorum Steve, bu yüzden kullanımım için uygun olur. Bu bağlıdır, ancak sadece basit bir formsa, anahattı olduğu gibi bırakmalısınız.
william44isme

4
Ben devre dışı bırakmak ve bir özel yapmak için mükemmel olduğunu düşünüyorum: css ile odak etkisi ...
ith

Ayrıca, bir şeyi nasıl devre dışı bırakacağınızı bilmek, geri döndürülemez olduğu anlamına gelmez. Herhangi bir müşteri için çalışan herkes, bir şekilde işlenen bir şeyi görmek isteyip daha sonra orijinal / varsayılan yoluna geri dönmek isteyebileceklerini bilir. Onları erişilebilirlik konusunda anlatmak bu arzuyu değiştirmeyecek veya kimseyi mutlu etmeyecektir.
JakeGould

Yanıtlar:


623
textarea, select, input, button { outline: none; }

Bununla birlikte, ışıma / anahattı tutmanın erişilebilirlik için gerçekten yararlı olduğu iddia edildi, çünkü kullanıcıların şu anda hangi Elementin odaklandığını görmelerine yardımcı olabilir.

Girişleri yalnızca kullanıcı seçtiğinde girişleri hedeflemek için ': focus' sözde öğesini de kullanabilirsiniz.

Demo: https://jsfiddle.net/JohnnyWalkerDesign/xm3zu0cf/


2
Harika, çok teşekkür ederim. Ayrıca merak ediyorum, textarea yeniden boyutlandırma seçeneğini de kaldırabilir miyim (textarea'nın sağ alt tarafında)?
Alec Smart

3
Dikkat için +1; lütfen kullanıcının platformlarının nasıl performans gösterdiğine dair beklentilerini bozan herhangi bir şey yapmaktan kaçının; aslında üretkenliklerine zarar veriyor olabilir ve web sitenizin kullanımını zorlaştırabilirsiniz.
Rob

6
Chrome / safari textarea yeniden boyutlandırma seçeneğimi kendi sorumluluğunuzda kaldırın! Bazı sitelerde bile gerçekten yararlı, vazgeçilmez buluyorum.
JeeBee

5
yeniden boyutlandırma tanıtıcısından kurtulmak için: resize: none;
Daniel

22
kutu-gölge: none;
styks

92

Bu etki, giriş olmayan elemanlarda da ortaya çıkabilir. Aşağıdaki çalışmaları daha genel bir çözüm olarak buldum

:focus {
  outline-color: transparent;
  outline-style: none;
}

Güncelleme::focus Seçiciyi kullanmanız gerekmeyebilir . Bir öğeniz varsa, diyelim <div id="mydiv">stuff</div>ve bu div öğesinde dış ışıltı alıyorsanız, normal gibi uygulayın:

#mydiv {
  outline-color: transparent;
  outline-style: none;
}

Bu, örneğin <button>, çoğunlukla yine de tıkladığınız için odakta parıltıdan özellikle yararlanmayan öğeler için çalışır .
kasimir

1
Kabul edilen cevap OSX'te Chrome'da benim için çalışmadı. Bu çözüm işi yaptı.
Bart

Ayrıca bu tekniği kullanarak, odağı koruyabilirsiniz, ancak anahattın değerini seçtiğiniz düz bir renk olarak yeniden tanımlayın, vb. Tamamen kaldırmak tatmin edici değilse sitenizin stiline uyacak şekilde.
Neil Monroe

1
Chrome'un en son sürümünde benim için çalışmadı45.0.2454.101 m
J86

@ Carl-W'nin bu cevabı göz ardı edilmemelidir! - Bu, div olan bir bağlantıya bağlanmak için jQuery kullanılırken kullanışlıdır. Div'de bir iframe'i yeniden yüklüyordum, daha sonra manuel olarak yeniden yüklemeden çapa gidiyordum. Sayfayı tutturucuya kaydırırdı, ancak tüm div mavi bir dış parıltıya sahipti. Bu CSS'yi div öğesine ekledi ve işe yaradı! - NOT: Ben kullanmadım :focusben sadece söylemek gerekirse, seçici için outline-colorve outline-stylebenim div css üzerinde.
Wade

13

Webkit tabanlı tarayıcılarda textarea yeniden boyutlandırma hakkında:

Metin alanında maksimum yüksekliğin ve maksimum genişliğin ayarlanması, görsel yeniden boyutlandırma tutamacını kaldırmaz. Deneyin:

resize: none;

(ve evet, "kullanıcının beklentilerini ihlal eden herhangi bir şey yapmaktan kaçınmaya çalışın" fikrine katılıyorum, ancak bazen mantıklı, yani bir web uygulaması bağlamında)

Webkit form öğelerinin görünümünü ve hissini sıfırdan özelleştirmek için:

-webkit-appearance: none;

3
Aynı zamanda tamamen devre dışı bırakmadan bazı düzenleri ile etkileşimini çözebilir ki, sadece tek bir yönde yeniden boyutlandırma izin vermek mümkündür: boyutlandırma olası değerleri none, both, horizontal, vertical, ve inherit.
Boann

Burada sunulan çözümü beğendim '-webkit-view: none;' - TÜM stilleri giriş öğelerinden kaldırır, böylece onları istediğiniz gibi biçimlendirebilirsiniz. Teşekkürler!
hanazair

Bunun neden bu kadar çok oyu olduğunu bilmiyorum, bu sorunun cevabı değil.
paddotk

7

Carl W :

Bu etki, giriş olmayan elemanlarda da ortaya çıkabilir. Aşağıdaki çalışmaları daha genel bir çözüm olarak buldum

:focus {
  outline-color: transparent;
  outline-style: none;
}

Bunu açıklayacağım:

  • :focusodaktaki öğeleri biçimlendirdiği anlamına gelir. Yani odaktaki unsurları şekillendiriyoruz.
  • outline-color: transparent; mavi ışığın şeffaf olduğu anlamına gelir.
  • outline-style: none; aynı şeyi yapar.

5

Bunu divbir tıklama etkinliğinin olduğu bir deneyim yaşadım ve 20 aramadan sonra günümü kurtaran bu snippet'i buldum.

-webkit-tap-highlight-color: rgba(0,0,0,0);

Bu, webkit mobil tarayıcılarında varsayılan düğme vurgulamayı devre dışı bırakır


4

Bu, erişilebilirliği önemseyen insanlar için bir çözümdür .

Lütfen, outline:none;odak çerçevesini devre dışı bırakmak için kullanmayın . Bunu yaparsanız web'in erişilebilirliğini öldürüyorsunuz. Bunu yapmanın erişilebilir bir yolu var.

Sınırın erişilebilir bir şekilde nasıl kaldırılacağını açıklamak için yazdığım bu makaleye göz atın .

Kısacası ana hat kenarlığını yalnızca bir klavye kullanıcısı tespit ettiğimizde göstermektir. Bir kullanıcı faresini kullanmaya başladığında anahattı devre dışı bırakırız. Sonuç olarak ikisinden en iyisini elde edersiniz.


2

Işıma Bootstrap'deki düğmelerden kaldırmak istiyorsanız (bence kötü UX olması gerekmez), aşağıdaki koda ihtiyacınız olacaktır:

.btn:focus, .btn:active:focus, .btn.active:focus{
  outline-color: transparent;
  outline-style: none;
}

Teşekkürler. .btn:active:focusdüğmesini basılı tutarken ışımayı gidermek için gerekliydi.
homerjam

2

Bu çözüm benim için çalıştı.

input:focus {
    outline: none !important;
    box-shadow: none !important;
}

1

bazı durumlarda olur da dış çizgiyi kaldırmak için aşağıdaki düğmeleri kullanın

input:hover
input:active, 
input:focus, 
textarea:active,
textarea:hover,
textarea:focus, 
button:focus,
button:active,
button:hover
{
    outline:0px !important;
}

0
<select class="custom-select">
        <option>option1</option>
        <option>option2</option>
        <option>option3</option>
        <option>option4</option>
</select>

<style>
.custom-select {
        display: inline-block;
        border: 2px solid #bbb;
        padding: 4px 3px 3px 5px;
        margin: 0;
        font: inherit;
        outline:none; /* remove focus ring from Webkit */
        line-height: 1.2;
        background: #f8f8f8;

        -webkit-appearance:none; /* remove the strong OSX influence from Webkit */

        -webkit-border-radius: 6px;
        -moz-border-radius: 6px;
        border-radius: 6px;
    }
    /* for Webkit's CSS-only solution */
    @media screen and (-webkit-min-device-pixel-ratio:0) { 
        .custom-select {
            padding-right:30px;    
        }
    }

    /* Since we removed the default focus styles, we have to add our own */
    .custom-select:focus {
        -webkit-box-shadow: 0 0 3px 1px #c00;
        -moz-box-shadow: 0 0 3px 1px #c00;
        box-shadow: 0 0 3px 1px #c00;
    }

    /* Select arrow styling */
    .custom-select:after {
        content: "▼";
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        font-size: 60%;
        line-height: 30px;
        padding: 0 7px;
        background: #bbb;
        color: white;

        pointer-events:none;

        -webkit-border-radius: 0 6px 6px 0;
        -moz-border-radius: 0 6px 6px 0;
        border-radius: 0 6px 6px 0;
    }
</style>

0

Anahat, sürgülü kapı görüntüsünün sağ "kapağını" kapsamaz, çünkü odaklama durumu biraz sakat görünüyor.

input.slidingdoorbutton:focus { outline: none;}

0

Bu etkiyi metin girdi alanlarımdan kaldırmam gerekiyordu ve diğer tekniklerin tam olarak çalışmasını sağlayamadım, ama bu benim için işe yarıyor;

input[type="text"], input[type="text"]:focus{
            outline: 0;
            border:none;
            box-shadow:none;

    }

Firefox ve Chrome'da test edildi.


0

Elbette! * Kullanarak mavi kenarlığı tüm HTML öğelerinden de kaldırabilirsiniz

*{
    outline-color: transparent;
    outline-style: none;
  }

Ve

 *{
     outline: none;   
   }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.