ฝังรูปภาพในองค์ประกอบ <button>


146

ฉันพยายามแสดงภาพ png ใน<button>องค์ประกอบใน HTML ปุ่มมีขนาดเดียวกับภาพและภาพจะปรากฏขึ้น แต่ด้วยเหตุผลบางประการไม่ได้อยู่ตรงกลางจึงไม่สามารถมองเห็นได้ทั้งหมด กล่าวอีกนัยหนึ่งก็คือดูเหมือนว่ามุมขวาบนของภาพจะอยู่ตรงกลางปุ่มไม่ใช่ที่มุมขวาบนของปุ่ม

นี่คือรหัส HTML:

<button id="close" class="closing" onClick="javascript:close_clip()"><img src="icons/close.png" /></button>

อัปเดต:
สิ่งที่เกิดขึ้นจริงฉันคิดว่าเป็นปัญหาระยะขอบ ฉันได้ระยะขอบสองพิกเซลดังนั้นภาพพื้นหลังจึงหลุดออกจากปุ่ม ปุ่มและภาพที่มีขนาดเดียวกันซึ่งเป็นเพียง20pxดังนั้นจึงเห็นได้ชัดมาก ... ฉันพยายามmargin:0, padding:0แต่มันก็ไม่ได้ช่วย ...


สำหรับฉันมันทำงานได้อย่างสมบูรณ์ ... บริบทใดที่คุณกำลังประสบอยู่ สามารถโพสต์โค้ดเพิ่มอีกสองสามบรรทัดได้หรือไม่?

3
คุณสามารถทำซ้ำสิ่งนี้บนไซต์สดเช่นJS Fiddleเพื่อให้เราเห็นว่าเกิดอะไรขึ้น?
เดวิดกล่าวว่าคืนสถานะโมนิกาใน

คำตอบ:


198

คุณสามารถใช้ภาพประเภทอินพุต

<input type="image" src="http://example.com/path/to/image.png" />

ทำงานเป็นปุ่มและสามารถติดตัวจัดการเหตุการณ์ไว้ได้

หรือคุณสามารถใช้ css เพื่อจัดรูปแบบปุ่มของคุณด้วยภาพพื้นหลังและตั้งค่าเส้นขอบระยะขอบและสิ่งที่คล้ายกันได้อย่างเหมาะสม

<button style="background: url(myimage.png)" ... />

2
... และไม่จำเป็นต้องใช้ JavaScript ในการส่งแบบฟอร์ม
ComFreek

6
-1: " ควร " เป็นคำที่แรงเกินไปเนื่องจากไม่ใช่สิ่งที่<input type="image">ออกแบบมาเพื่อ ทำไมคุณไม่แนะนำ CSS?
Wesley Murch

ฉันต้องการใช้ปุ่ม ถ้าฉันไม่พบคำตอบฉันจะทำ ขอบคุณ
Amit Hagin

จากนั้นจัดรูปแบบตามที่ระบุไว้ในคำตอบนี้และคำตอบอื่น ๆ
Andrew Barber

4
อย่าลืมว่าจำเป็นต้องใช้แท็กสิ้นสุดการเริ่มต้นทั้งสองสำหรับองค์ประกอบปุ่มดังนั้นในทางเทคนิค <button /> ไม่ถูกต้องควรเป็น <button> </button>
Tamas Czinege

70

หากรูปภาพเป็นข้อมูลเชิงความหมาย (เช่นรูปโปรไฟล์เป็นต้น) ให้ใช้<img>องค์ประกอบภายในของคุณ<button>และใช้ CSS เพื่อปรับขนาดไฟล์<img>. หากรูปภาพเป็นเพียงวิธีหนึ่งในการสร้างปุ่มที่ดึงดูดสายตาให้ใช้ CSS background-imageเพื่อจัดรูปแบบ<button>(และอย่าใช้<img>)

การสาธิต: http://jsfiddle.net/ThinkingStiff/V5Xqr/

HTML:

<button id="close-image"><img src="http://thinkingstiff.com/images/matt.jpg"></button>
<button id="close-CSS"></button>

CSS:

button {
    display: inline-block;
    height: 134px;
    padding: 0;
    margin: 0;
    vertical-align: top;
    width: 104px;
}

#close-image img {
    display: block;
    height: 130px;  
    width: 100px;
}

#close-CSS {
    background-image: url( 'http://thinkingstiff.com/images/matt.jpg' );
    background-size: 100px 130px;
    height: 134px;  
    width: 104px;
}

เอาท์พุต:

ป้อนคำอธิบายภาพที่นี่


@ThinkingStiff <image>องค์ประกอบ? ฉันคิดว่าคุณหมายถึง<img>ในข้อความของคุณ;)
ComFreek

ขอบคุณสำหรับคำตอบที่ดี !! แต่ปัญหายังคงอยู่ ... ฉันอัปเดตคำถามเล็กน้อย - อาจช่วยให้คุณเข้าใจได้ดีขึ้น
Amit Hagin

@AmitHagin ฉันเห็นการอัปเดตของคุณ จำไว้ว่าปุ่มมีเส้นขอบซึ่งรวมอยู่ในการคำนวณความสูง ดังนั้นเพื่อให้พอดีกับภาพสูงความสูงปุ่มจะต้องมีการ20px 24px
ThinkingStiff

@AmitHagin นอกจากนี้เพื่อป้องกันปัญหาช่องว่างให้เปลี่ยน<img>เป็นdisplay: block;ไฟล์. ฉันอัปเดตลิงก์สาธิตเพื่อแสดงสิ่งนี้
ThinkingStiff

มีข้อกังวลเกี่ยวกับ accessiblity / alt text ด้วยวิธีนี้หรือไม่? ฉันเป็นสนิมจริงๆ แต่การซ่อนข้อความโดยการหักล้างด้วยสองสามพันพิกเซลยังคงเป็นวิธีแก้ปัญหาที่ยอมรับได้หรือไม่?
Rob Drimmie

13

วิธีที่ง่ายที่สุดในการใส่รูปภาพลงในปุ่ม:

<button onclick="myFunction()"><img src="your image name here.png"></button>

การดำเนินการนี้จะปรับขนาดปุ่มเป็นขนาดของรูปภาพโดยอัตโนมัติ




2

เพิ่มโฟลเดอร์ใหม่พร้อมชื่อรูปภาพในโปรเจ็กต์ของคุณ ใส่รูปภาพลงในโฟลเดอร์รูปภาพ แล้วมันจะทำงานได้ดี

<input type="image" src="~/Images/Desert.jpg" alt="Submit" width="48" height="48">

1

ลองใช้รูปแบบนี้และใช้แอตทริบิวต์ "width" เพื่อจัดการขนาดภาพซึ่งทำได้ง่าย สามารถใช้ JavaScript ในองค์ประกอบได้เช่นกัน

<button><img src=""></button>


1

หัวข้อคือ 'ภาพฝังในองค์ประกอบที่ปุ่ม' และคำถามโดยใช้HTML แบบพื้นฐาน ฉันทำสิ่งนี้โดยใช้แท็ก span ในลักษณะเดียวกับที่ใช้ glyphicons ใน bootstrap รูปภาพของฉันมีขนาด 16 x 16px และสามารถเป็นรูปแบบใดก็ได้

นี่คือ HTML ธรรมดาที่ตอบคำถาม:

<button type="button"><span><img src="images/xxx.png" /></span>&nbsp;Click Me</button>

-8

ปุ่มไม่รองรับรูปภาพโดยตรง ยิ่งไปกว่านั้นวิธีที่คุณทำคือการเชื่อมโยง ()

รูปภาพจะถูกเพิ่มลงบนปุ่มโดยใช้คุณสมบัติ BACKGROUND-IMAGE ในรูปแบบ

คุณยังสามารถระบุการทำซ้ำและคุณสมบัติอื่น ๆ โดยใช้แท็ก

ตัวอย่างเช่นรูปภาพพื้นฐานที่เพิ่มลงในปุ่มจะมีรหัสนี้:

    <button style="background-image:url(myImage.png)">

สันติภาพ


2
คำตอบของคุณไม่ถูกต้องเอกสารอย่างเป็นทางการระบุว่าได้รับอนุญาต
biphobe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.