ปุ่ม bootstrap แสดงโครงร่างสีน้ำเงินเมื่อคลิก


138

ฉันเพิ่มสิ่งนี้แล้ว แต่ยังคงมีเส้นสีน้ำเงินปรากฏขึ้นเมื่อคลิกปุ่ม

.btn:focus {
  outline: none;
}

จะเอาสิ่งที่น่าเกลียดนั้นออกได้อย่างไร?


พยายามตั้งค่า:activeสำหรับปุ่ม เพิ่มเติม: ใช้ตัวตรวจสอบในเบราว์เซอร์ของคุณเพื่อค้นหาปัญหา
Adrian Preuss

1
คุณสามารถโพสต์โค้ดของคุณเพิ่มเติมหรือสาธิต jsfiddle เพื่อให้เราช่วยคุณได้
Richa

ไม่แน่ใจเกี่ยวกับปุ่ม แต่ bootstrap เพิ่ม box-shadow ให้กับช่องป้อนข้อมูลซึ่งสามารถลบออกได้ด้วย box-shadow: none;
davidcondrey

3
FWIW รูปแบบโฟกัสมีความสำคัญสำหรับการนำทางด้วยแป้นพิมพ์
Nate Whittaker

รูปภาพจะมีประโยชน์ที่นี่
ซุปไก่

คำตอบ:


204

อาจเป็นเพราะคุณสมบัติของคุณกำลังถูกลบล้าง ลองแนบ !importantรหัสของคุณพร้อมกับ: active

.btn:focus,.btn:active {
   outline: none !important;
   box-shadow: none;
}

เพิ่ม box-shadow ด้วยเพราะมิฉะนั้นคุณจะยังคงเห็นเงารอบ ๆ ปุ่ม

แม้ว่านี่จะไม่ใช่แนวปฏิบัติที่ดีที่จะใช้ แต่สิ่งสำคัญฉันขอแนะนำให้คุณใช้คลาสที่เฉพาะเจาะจงมากขึ้นแล้วลองใช้ css ด้วยการใช้! important ...


@ Janak แต่ทำไมจึงจำเป็นเมื่อแทนที่: active?

ฉันอาจจะเพิ่มว่าเมื่อ nuking ด้วย! ที่สำคัญคลาสหลอกไม่จำเป็น

7
หากคุณใช้ Bootstrap 4 ให้เพิ่มbox-shadow: none(และอย่าลืมคำนำหน้า-webkit-box-shadow: none) ในคำตอบนี้ โปรดทราบว่า Bootstrap 4 มีอยู่แล้ว.btn:focus { outline: none }ในคลาส btn
Cooleronie

1
ภาพเป็นสิ่งสำคัญเมื่อไม่ใช้เมาส์ หากคุณลบโครงร่างออกคุณต้องเพิ่มความคิดเห็นที่เป็นภาพอื่น ๆ ไม่เช่นนั้นไซต์ของคุณจะพิการ
Josef Engelfrost

53

ใน Bootstrap เวอร์ชันล่าสุดฉันพบว่าการลบโครงร่างนั้นไม่ได้ผล และฉันต้องเพิ่มสิ่งนี้เพราะมีกล่องเงา:

.btn:focus, .btn:active {
  outline: none !important;
  box-shadow: none !important;
}

1
นี่คือสิ่งที่ช่วยสำหรับฉัน
Vahx

หากคุณต้องการให้แน่ใจว่าคุณกดปุ่มทั้งหมดของคุณเพียงแค่ใช้ปุ่ม {outline: none! important; กล่องเงา: ไม่มี! สำคัญ; }
ดึง

53

มีคลาส boostrap ในตัวshadow-noneสำหรับปิดการใช้งานbox-shadow(not outline) ( https://getbootstrap.com/docs/4.1/utilities/shadows/ ) สิ่งนี้จะลบเงาของปุ่ม:

<button class='btn btn-primary shadow-none'>Example button</button>

ขอบคุณมาก.
Nikolay Tsenkov

3
นี่คือคำตอบที่ดีที่สุด
jmrueda

1
นี่คือทางออกที่คุณกำลังมองหา นี่คือทางออกย้ายตามย้ายไป ขอบคุณสิ่งนี้แก้ไขได้สำหรับ Firefox ด้วย Bootstrap 4
swudev

โพสต์นี้เกี่ยวกับการลบโครงร่างไม่ใช่เงา น่าเศร้าที่ความคิดเห็นนี้ทำให้เข้าใจผิด
Clay Records

ใช่มันเป็นคำตอบที่ดีที่สุด แต่ทำไมมันถึงไม่ยอมรับในการแจ้งเตือนการยกเลิกปุ่มกากบาท
นวราช

19

ลองด้านล่างรหัส

.button:active, 
 button:active,
.button:focus, 
 button:focus,
.button:hover, 
 button:hover{
    border:none !important;
    outline:none !important;
}

4
ฉันต้องการเพียงส่วนนี้เพื่อลบโครงร่างใน chrome: button: focus {outline: none;}
TTT

13

สิ่งนี้เกิดขึ้นกับฉันใน Chrome (แม้ว่าจะไม่ใช่ใน Firefox) ฉันได้พบว่าทรัพย์สินที่ถูกกำหนดโดยเงินทุนเป็นoutline outline: 5px auto -webkit-focus-ring-color;แก้ไขได้โดยการแทนที่outlineคุณสมบัติในภายหลังใน CSS ที่กำหนดเองของฉันดังนี้:

.btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {
    outline: 0;
}

12

ปุ่มนี้จะแก้ปัญหาด้วยข้อความปุ่มเฉพาะไอคอนหรือปุ่มคือลิงค์:

 <!--1. button with a text -->
 <button type="button" class="btn btn-success" id="newWord">Save</button>

 <!--2. button only with a close icon -->
 <button type="button" class="close"></button>

 <!--3. button is a link -->
 <a class="btn btn-success btn-xs" href="#">Save</a>



button,
button:active,
button:focus, 
button:hover,
.btn,
.btn:active, 
.btn:focus, 
.btn:hover{   
    outline:none !important;
}

ถ้าคุณเพิ่ม border:none !important;

{
    border:none !important;
    outline:none !important;
}

จากนั้นปุ่มจะมีขนาดเล็กลงเมื่อคลิก



7

ใน Bootstrap 4 พวกเขาใช้ box-shadow: 0 0 0 0px rgba(0,123,255,0);บน: focus ฉันแก้ปัญหาของฉันด้วย

a.active.focus,
a.active:focus,
a.focus,
a:active.focus,
a:active:focus,
a:focus,
button.active.focus,
button.active:focus,
button.focus,
button:active.focus,
button:active:focus,
button:focus,
.btn.active.focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn:active:focus,
.btn:focus {
    outline: 0;
    outline-color: transparent;
    outline-width: 0;
    outline-style: none;
    box-shadow: 0 0 0 0 rgba(0,123,255,0);
}

4

วิธีนี้อาจช่วยได้หากยังมีคนยังไม่ได้รับการแก้ไข

(function() {
  $('button').on('click', function() {
    $("#action").html("button was clicked");
    console.log("the button was clicked");
  });
})();
.btn-clear {
  background-color: transparent !important;
  border-style: none !important;
  cursor: pointer;
}

.btn-clear:active,
.btn-clear:focus {
  outline-style: none !important;
  outline-color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- this button has default style -->
<button>Action</button>
<!-- this button is clear of style -->
<button class="btn-clear">Action</button>

<label id="action"></label>


4

แม้ว่าจะลบเค้าโครงออกจากปุ่มโดยตั้งค่าเป็น 0 แต่ก็ยังมีพฤติกรรมตลก ๆ บนปุ่มเมื่อคลิกขนาดของมันจะหดลงเล็กน้อย ดังนั้นฉันจึงคิดวิธีแก้ปัญหาที่ดีที่สุด:

.btn:focus {
   outline: none !important;
   box-shadow: 0 0 0 0;
}

หวังว่านี่จะช่วยได้ ...


3

คุณต้องใช้การทำรังที่เหมาะสมจากนั้นจึงใช้สไตล์กับมัน

  • คลิกขวาที่ปุ่มและค้นหาคลาสที่ซ้อนกันโดยใช้ (ตรวจสอบองค์ประกอบโดยใช้ firebug สำหรับ firefox) (ตรวจสอบองค์ประกอบสำหรับ chrome)

  • เพิ่มสไตล์ให้กับกลุ่มคนทั้งชั้นเรียน แค่นั้นก็ใช้ได้แล้ว



3

ฉันเลือกที่จะลบความกว้างของเส้นขอบ:focusออก วิธีนี้จะลบช่องว่างที่น่าเกลียดระหว่างโครงร่างและมุมโค้งมนของปุ่ม ด้วยเหตุผลบางประการปัญหานี้เกิดขึ้นกับองค์ประกอบปุ่มจริงเท่านั้นไม่ใช่<a class="btn">องค์ประกอบ

button.btn:focus {
  border-width: 0;
}

3

นี่คือโซลูชัน Boostrap 4 ของฉันเพื่อลบโครงร่างปุ่ม

/*
* Boostrap 4
* Remove blue outline from button
*/

.btn:focus,
.btn:active {
  box-shadow: none;
}

3

ฉันเพิ่งมีปัญหาเดียวกันและรหัสต่อไปนี้ใช้ได้กับฉัน:

.btn:active, .btn:focus, .btn:active:focus, .btn.active:focus {
    outline: none !important;
}

.btn {
  margin:32px;
}
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->




<button type="button" class="btn btn-default">Button</button>

หวังว่ามันจะช่วยได้!


ร่าง! Doh !! thud
อดัมค็อกซ์

3

จริงๆแล้วใน bootstrap มีการกำหนดตัวแปรทั้งหมดสำหรับทุกกรณี ในกรณีของคุณคุณต้องแทนที่ตัวแปรเริ่มต้น '$ input-btn-focus-box-shadow' จากไฟล์ '_variables.scss' เช่นนั้น: $input-btn-focus-box-shadow: none; โปรดทราบว่าคุณต้องลบล้างตัวแปรนั้นใน '_yourCusomVarsFile.scss' ที่คุณกำหนดเอง และไฟล์นั้นควรนำเข้าในโปรเจ็กต์ตามลำดับก่อนแล้วจึงบูตสแตรปดังนี้:

@import "yourCusomVarsFile";
@import "bootstrap/scss/bootstrap";
@import "someOther";

bootstraps vars ใช้แฟล็ก '! default'

$input-focus-box-shadow: $input-btn-focus-box-shadow !default;

ดังนั้นในไฟล์ของคุณคุณจะลบล้างค่าเริ่มต้น นี่คือภาพประกอบ:

$input-focus-box-shadow: none;
$input-focus-box-shadow: $input-btn-focus-box-shadow !default;

ตัวแปรแรกมีลำดับความสำคัญมากกว่าจากนั้นตัวแปรที่สอง เช่นเดียวกับรัฐและกรณีที่เหลือ หวังว่ามันจะช่วยคุณได้

นี่คือไฟล์ '_variable.scss' จาก repo ที่คุณสามารถค้นหาค่าเริ่มต้นทั้งหมดจาก bootstrap: https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss

Chears





1

โปรดทราบว่าหากปุ่มของคุณอยู่ในจุดยึดเช่น:

<a href='some_link'>
    <button class='btn'>Button</button>
</a>

การเพิ่มสไตล์ให้ปุ่มเองอาจไม่เพียงพอคุณอาจต้องเพิ่มa:focus, a:active { outline: none }กฎ CSS ตามความเหมาะสม (วิธีนี้ใช้ได้ผลกับฉัน)



1

บางครั้ง{outline: 0}ไม่สามารถแก้ปัญหาและเราสามารถลอง{box-shadow: none;}


1

ฉันใช้ bootstrap 4 คุณสามารถใช้ outline และ box-shadow ได้

#buttonId {
    box-shadow: none;
    outline: none;
}

หรือถ้าปุ่มอยู่ในองค์ประกอบเช่น div ที่ไม่มีพื้นหลังกล่องเงาก็เพียงพอแล้ว

#buttonId {
     box-shadow: none;
}

ตัวอย่าง: https://codepen.io/techednelson/pen/XRwgRB


1

หากคุณใช้เวอร์ชัน 4.3 ขึ้นไปโค้ดของคุณจะทำงานไม่ถูกต้อง นี่คือสิ่งที่ฉันใช้ มันได้ผลสำหรับฉัน

.btn:focus, .btn:active {
    outline: none !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
}

คุณถูก. มันใช้ไม่ได้ถ้าไม่มี -webkit-box-shadow: none! important; ไลน์.
Emir

1

แทนที่จะกำหนดเป้าหมายไปที่คลาสปุ่ม ( .btn ) ที่นี่ฉันกำหนดเป้าหมายไปที่องค์ประกอบของปุ่มเองและมันก็ใช้ได้สำหรับฉัน

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

และสามารถใช้shadow-noneคลาสสำหรับฟิลด์อินพุต


0

นี่เป็นวิธีที่ไม่ใช่ CSS การใช้ JQuery เพียงแค่ลบคลาส "focus" เมื่อใดก็ตามที่มีการคลิกองค์ประกอบ

$(".btn").mousemove(function(element) { $(this).removeClass("focus"); });

วิธีนี้อาจทำให้เส้นขอบกะพริบและย้อนกลับออกไปสั้น ๆ ซึ่งไม่ได้ดูแย่ในความคิดของฉัน (ดูเหมือนเป็นส่วนหนึ่งของการตอบสนองเมื่อคลิกปุ่ม)

เหตุผลที่ฉันใช้. mousemove () คือ. click () และ .mouseup () พิสูจน์แล้วว่าไม่ได้ผล


2
neh เพิ่มจาวาสคริปต์เพื่อกำจัด CSS ไม่ใช่แนวทางปฏิบัติที่ดีที่สุด IMHO
David

0

การเปลี่ยนค่าเหล่านี้ได้ผลสำหรับฉัน ฉันพบโดยดูที่เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของ Chrome

.btn-primary:not(:disabled):not(.disabled).active,
.btn-primary:not(:disabled):not(.disabled):active,
.show>.btn-primary.dropdown-toggle {
    color: #fff;
    background-color: /*Change This*/;
    border-color: /*Change This*/;
}

สิ่งนี้ยังคงเงาของปุ่มไว้ด้วยเช่นกันโดยจะเปลี่ยนสีของปุ่มเมื่อคลิกเท่านั้น


0

แทนที่คำสั่ง bootstrap ที่แน่นอน:

.btn-primary.focus, .btn-primary:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{
 box-shadow: none;
}


0

วิธี SCSS สำหรับองค์ประกอบทั้งหมด (ไม่ใช่เฉพาะปุ่ม):

body {
  * {
    &:focus, &.focus,
    &:active, &.active {
      outline: transparent none 0 !important;
      box-shadow: 0 0 0 0 rgba(0,123,255,0) !important;
      -webkit-box-shadow: none !important;
    }
  }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.