2016-08-20 24 views
10

Tôi đang xây dựng trang web danh mục đầu tư.Tại sao hình ảnh SVG của tôi không sử dụng thuộc tính CSS "width"?

HTML Mã

<div id = "hero"> 
    <div id = "social"> 
     <img src = "facebook.svg"> 
     <img src = "linkedin.svg"> 
     <img src = "instagram.svg"> 
    </div> 
</div> 

mã CSS (sử dụng SASS)

#hero { 
    display: flex; 
    flex-direction: column; 
    justify-content: center; 
    align-items: center; 
    height: 300px; 

    #social { 
     width: 50%; 
     display: flex; 
     justify-content: space-between; 
     flex-wrap: wrap; 

     img { 
      width: 2em; 
     } 
    } 
} 

Vấn đề là tôi không thể thay đổi kích thước SVGs bằng cách sử dụng CSS width tài sản. Dưới đây là những gì tôi có được trong các trường hợp khác nhau:

img { width: 2em; }

enter image description here

img { width: 3em; }

enter image description here

img { width: em; }

enter image description here

Xin lưu ý cách biểu tượng thu gọn về phía giữa của số hero div.

Thay vào đó, nếu tôi sử dụng CSS height tài sản:

img { height: 2em; }

enter image description here

img { height: 3em; }

enter image description here

img { height: 4em; }

enter image description here

Hành vi này là những gì tôi cần, nhưng tôi không chắc đây là cách phù hợp. Tại sao điều này xảy ra? Bạn có biết cách thay đổi kích thước hình ảnh SVG tốt hơn (đặc biệt là sử dụng mô hình hộp số flexbox)?

+1

@Michael_B, cảm ơn, lỗi của tôi. – harpo

Trả lời

18

SVGs khác với hình ảnh bitmap như PNG vv Nếu tập tin SVG lên có viewBox - như bạn dường như - sau đó nó sẽ được thu nhỏ để phù hợp với nó được định nghĩa khung nhìn. Nó sẽ không trực tiếp mở rộng như PNG.

Vì vậy, tăng width của img sẽ không làm cho các biểu tượng cao hơn nếu chiều cao bị giới hạn. Bạn sẽ chỉ kết thúc với img nằm ngang ở giữa trong một hộp rộng hơn.

Tôi tin rằng vấn đề của bạn là SVG của bạn có chiều cao cố định được xác định trong chúng.Mở các tập tin SVG và chắc chắn rằng họ hoặc là:

  1. không có widthheight xác định, hoặc
  2. widthheight cả các thiết lập để "100%".

Điều đó sẽ giải quyết được vấn đề của bạn. Nếu không, hãy đăng một trong các SVG của bạn vào câu hỏi của bạn để chúng tôi có thể xem cách xác định nó.

+0

Câu trả lời của bạn có vẻ là giải pháp cho vấn đề của tôi. Vì vậy, nếu tôi không chỉ định 'width' và' height' của SVG, tôi nghĩ rằng tôi có thể mở rộng nó mà không gặp vấn đề gì. –

0

Bạn phải sửa đổi thuộc tính viewBox để thay đổi chiều cao và chiều rộng chính xác bằng svg. Nó nằm trong thẻ <svg> của svg.

https://developer.mozilla.org/en/docs/Web/SVG/Attribute/viewBox

+0

Nếu bạn đi xuống, hãy cho chúng tôi biết lý do. –

+2

Đoán của tôi về downvote là việc thay đổi viewbox không thực sự mở rộng các yếu tố svg, nó chỉ thay đổi kích thước khung nhìn. – Marko

Các vấn đề liên quan