FF'de seçim kutusundan dış çizgiyi kaldır


97

Seçili bir öğede seçilen bir öğeyi çevreleyen noktalı çizgiyi kaldırmak mümkün müdür?

alternatif metin

outlineÖzelliği CSS'ye eklemeyi denedim ama işe yaramadı, en azından FF'de değil.

<style>
   select { outline:none; }
</style>

Güncelle
Devam etmeden ve ana hatları kaldırmadan önce lütfen bunu okuyun.
http://www.outlinenone.com/


üç ay önce aynı şeyi aradım ama bir radyo düğmesiyle. Beş veya altıdan fazla farklı çözüm buldum, hiçbir şey işe yaramadı. Bu yüzden bunu yapamayacağından şüpheleniyorum. Umarım yanılıyorumdur.
Arseni Mourzenko

Korkarım ki gerçek bu, ama yine de yanlış olduğunu kanıtlamayı umuyoruz: D
Martin

Mozilla'da çalışan, aptal noktalı çizginin iyi göründüğünü düşünen insanlar var mı? Bu neden kaldırmamız gereken bir şey?
billynoah

Yanıtlar:


74

Bir çözüm buldum, ancak tüm hacklerin anası, umarım diğer daha sağlam çözümler için bir başlangıç ​​noktası görevi görür. Dezavantajı (bence çok büyük), Modernizr gibi bir kitaplık (test edilmemiş, sadece bir teori) kullanmadığınız sürece (IE 9) desteklemeyen text-shadowancak destekleyen herhangi bir tarayıcının rgbametni oluşturmamasıdır.

Firefox, noktalı kenarlığın rengini belirlemek için metin rengini kullanır. Öyleyse söyle eğer yaparsan ...

select {
  color: rgba(0,0,0,0);
}

Firefox, noktalı kenarlığı şeffaf hale getirecektir. Ama elbette metniniz de şeffaf olacak! Yani metni bir şekilde görüntülemeliyiz. text-shadowkurtarmaya geliyor:

select {
  color: rgba(0,0,0,0);
  text-shadow: 0 0 0 #000;
}

Metnin yerini alacak şekilde ofseti ve bulanıklığı olmayan bir metin gölgesi koyarız. Elbette eski tarayıcı bunlardan hiçbir şey anlamıyor, bu nedenle renk için bir yedek sağlamalıyız:

select {
  color: #000;
  color: rgba(0,0,0,0);
  text-shadow: 0 0 0 #000;
}

Bu, IE9'un devreye girdiği zamandır: rgbametin gölgesini destekler ancak desteklemez , böylece görünüşte boş bir seçim kutusu alırsınız. text-shadowAlgılama özellikli Modernizr sürümünüzü alın ve yapın ...

.no-textshadow select {
  color: #000;
}

Zevk almak.


Teşekkürler dostum, yakında deneyeceğim :)
Martin

Gerçekte işe yarayan tek çözüm (FF 20 kullanarak). Tebrikler!
Gilberto Torrezan

4
Bu, her FF ve yalnızca FF:@-moz-document url-prefix() { ::-moz-focus-inner {border: none} select:-moz-focusring { color: transparent; text-shadow: 0px 0px 0px #000; } }
Timo Kähkönen

CSS'yi Chrome ve diğer tarayıcılarda etkileyecek mi?
Dadhich Sourav

166

Eh, Duopixel cevabı sade mükemmeldir. Bir adım daha ileri gidersek, onu kurşun geçirmez hale getirebiliriz.

select:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 #000;
}

İşte gidiyorsunuz, sadece Firefox için geçerli ve seçilen seçeneğin etrafındaki çirkin noktalı çerçeve kayboldu.


1
İlginç bir şekilde, bu çözüm Duopixel'in yanıtı kadar kurşun geçirmez değildir. Seçme kutunuzla bir geçiş efekti kullanırsanız (yani -moz geçişi), noktalı kutu geçiş süresi boyunca görünecek ve sonra kaybolacaktır. Yani, '-moz-geçişi: tümü 0,5 saniye kolaylığı;' belirtirseniz, bu çözümle birlikte birleşik giriş kutusunu yarım saniye göreceksiniz, oysa Duopixel'in cevabında bunu hiç göremeyeceksiniz. Tüm seçim öğesinin şeffaf bir renk özelliğine sahip olmasını ayarlayarak bu sorunu çözebilirsiniz, ancak bu durumda kutuda odak olmadığında hiçbir metin görmezsiniz.
Jon

1
Düzenleme: Yukarıdakiler "... bu çözümle noktalı kutuyu yarım saniye göreceksiniz ..." demelidir . Yorumu artık düzenleyemiyorum. Her neyse, 'color: rgba (0,0,0,0);' mülkiyet geçişi düzeltir ve bu nedir gerekir seçme elemanı olmak; '-moz-odaklanma' işe yaramaz. Ayrıca ilginç bir şekilde, bazı nedenlerden dolayı Duopixel'in çözümüyle hem IE9'da hem de Chrome'da herhangi bir sorun yaşamıyorum, bu yüzden sonunda Modernizr ile konuştuğu şeyler benim için tamamen gereksizdi.
Jon

Elbette bir geçiş belirtirseniz görünecektir. allGeçişler içinde kullanmak , bir Gatling tabancasıyla anında ateş etmeye benzer.
Fleshgrinder

1
Bu veya Duopixel'in çözümü, Mac Mavericks'teki FF 33.0.3'te çalışmaz. Noktalı anahat yerine mavi bulanık bir çerçeve vardır.
Timo Kähkönen

1
bu, devre dışı bırakılan seçeneklerde tarayıcı stillerini bozar - odaklandığında seçim, gri olması gereken metin yerine siyah olur.
billynoah

19

Burada, Firefox seçim kutuları ile ilgili stil sorunlarını gidermek için bir çözüm işbirliği bulunmaktadır. Bu CSS seçiciyi, normal CSS sıfırlamanızın bir parçası olarak kullanın.

Sınıf, soruya göre anahatları kaldırır, ancak arka plan resmini de kaldırır (çünkü genellikle özel bir açılır ok kullanıyorum ve Firefox'un sistem açılır oku şu anda kaldırılamıyor). Açılır resim dışında herhangi bir şey için arka plan resmi kullanıyorsanız, sadece satırı kaldırınbackground-image: none !important;

@-moz-document url-prefix() {
    select, select:-moz-focusring, select::-moz-focus-inner {
       color: transparent !important;
       text-shadow: 0 0 0 #000 !important;
       background-image: none !important;
       border:0;
    }
}

Yine de bu yöntemi kullanarak seçenek metin rengini tanımlamanın bir yolu var mı?
user1063287

Aslında, SEÇ arka planda kullanılan Firefox oklarını, satıcıya özgü özelliği -moz-appearanceolarak ayarlayarak kaldırabilirsiniz none.
yodabar

Diğer cevaplar önemli select::-moz-focus-innerseçiciden yoksundur, bu da onları daha az etkili hale getirir. Bu yüzden bu benim ⬆'ımı alıyor.
Dave Land

select:-moz-focusringile birlikte color: transparentve text-shadow: 0 0 0 #000Firefox V63 odak üzerinde rahatsız edici sınırında kaldırıldı
Jason Moore

Not: url-önek (). fxsitecompat.dev/en-CA/docs/2018/… Bağlantıların okunması Aşamalı olup olmayacaklarını net bulmuyorum. Ancak tavsiyede bulunun.
user3342816

9

Bu, tüm firefox sürümlerini hedefleyecek

@-moz-document url-prefix() { 
    select {
       color: transparent !important;
       text-shadow: 0 0 0 #000 !important;
    }
}

Ana hattın sitenizdeki aynı stil sayfasını kullanan diğer sayfalarda görünmesini planlıyorsanız,! Önemli öğesini kaldırmak isteyebilirsiniz.


1
Bu seçilen cevap olmalıdır
brandonscript

9

Genel olarak, form kontrollerinin bu doğruluk derecesine göre şekillendirilmesi imkansızdır. Tüm kontrollerde makul bir özellik aralığını destekleyen bildiğim hiçbir tarayıcı yok. Görüntüler ve diğer HTML öğeleriyle "sahte" denetim oluşturan ve orijinal işlevlerini kodla taklit eden çok sayıda JavaScript kitaplığının olmasının nedeni budur:

http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

...


Thx, sanırım bunu başarmak için "kendi seçim listemi yapmalıyım". Biçim denetimlerinin tarayıcılar arasında daha tekdüze olmaması çok kötü.
Martin

1
@Martin: Bu tarz edilemez bir dosya yükleme kontrolü, kararlılık karşılaştırmak şey değildir hiç birçok tarayıcıda. ;)
Arseni Mourzenko

3

<select onchange="this.blur();">

Bunu kullanırsanız, listeden bir öğe seçene kadar kenarlık kalır.


2
Ne yazık ki, bu çözüm erişilebilirlik ve kullanılabilirlik kurallarına uymuyor. Görme engelli kullanıcılar için TTS arayüzlerinin yanı sıra, klavye ile gezinmeye izin vermez. Odaklanmış öğeler diğerlerinden farklı görünmelidir, şu anki soruyla ilgili sorun, Firefox'un nasıl karar vermenize izin vermemesidir.
yodabar

1

Şunlardan birini deneyin:

a:active {
 outline: none;
 -moz-outline: none;
}

a {
-moz-user-focus: none;
}

Referans


6
Çaba için teşekkürler, ama ne yazık ki işe yaramadı. Belki bir aelement üzerinde çalışıyor , ama bir selectelement üzerinde çalışmadı .
Martin

1

İşte çözüm geliyor

:focus {outline:none;}
::-moz-focus-inner {border:0;}

1
Test edildi. Çalışmıyor. Firefox bu özelliği tanır ancak hiçbir şey yapmıyor gibi görünmektedir. Ayarlamaya çalıştım 10px solid redve nerede göründüğünü bulamıyorum.
mpen

Diğer tüm yüksek oylu cevaplar işe yaramadığında bu aslında benim için çalıştı.
Tashows

0

Firefox Tüm Seçilebilir Etiketlerden anahat / noktalı kenarlığı kaldırın.

Bu kod satırını stil sayfanıza yerleştirin:

*:focus{outline:none !important;}   


0

Adım 1) HTML Ekleyin: İstediğiniz belirli seçenekleri ekleyin ve şu özelliği ekleyin: contenteditable = "true"

Adım 2) CSS Ekleyin: Keyifli tüm öğeleri seçmek için [öznitelik] seçiciyi kullanın ve anahat özelliği ile sınırı kaldırın:

[contenteditable] {
  outline: 0px solid transparent;
}
select {
  border: none;
}
<select contenteditable="true">
  <option value="option1">Option 1</option>
  <option value="option2">Option 2</option>
  <option value="option3">Option 3</option>
</select>


-2
    input[type='range']::-moz-focus-outer {
    border: 0;
    outline: none !important;
    }

% 100 çalışıyor


-4

Bu, odağı selectöğeden ve ana hattan kaldırır :

$("select").click(function(){
    $(this).blur();
});

Yine de, diğer tarayıcılarda eksiklikleri yok. Kullanıcının kullandığı tarayıcıyı kontrol etmek isteyeceksiniz:

if (FIREFOX) {
    //implement the code
}

Lütfen kod pasajını sağlamanın yanı sıra kod pasajınızın ne yaptığını açıklayın.
sayan
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.