簡體   English   中英

將 SVG 與文本對齊

[英]Aligning an SVG inline with text

我有以下JSFiddle ,其中 SVG 位於按鈕內某些文本的左側。 我希望 SVG 與文本內聯,以便它垂直定位在按鈕中。

我考慮過使用以下方法:

  • 盡管使用line-height似乎不起作用。
  • 設置margin-top :但是按鈕中的整個內容都向下移動。

我該怎么做才能使 SVG 與文本對齊? 謝謝。

如果vertical-align不能為您提供足夠精細的定位,那么您可以嘗試使用position: relative;調整圖標的相對定位position: relative; .

.icon {
    ...
    position: relative;
    top: 0.15em;
}

如果您對位置使用em值,那么這應該允許該類適用於任何字體大小。

 button { font-family:'Texta-Regular', sans-serif; font-size: 2.7em; line-height: 1.2em; display: block; margin: 2em auto; padding: .3em 2em; text-align: center; border: none; border-radius: 5px; -webkitborder-radius: 5px; outline: none; background-color: #dd4b39; color: #fff; } .icon { width: 1em; display: inline; margin-right: 40px; position: relative; top: 0.15em; }
 <button> <svg version="1.1" fill="#fff" class="icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 96.828 96.827" xml:space="preserve"> <path d="M62.617,0H39.525c-10.29,0-17.413,2.256-23.824,7.552c-5.042,4.35-8.051,10.672-8.051,16.912c0,9.614,7.33,19.831,20.913,19.831c1.306,0,2.752-0.134,4.028-0.253l-0.188,0.457c-0.546,1.308-1.063,2.542-1.063,4.468c0,3.75,1.809,6.063,3.558,8.298l0.22,0.283l-0.391,0.027c-5.609,0.384-16.049,1.1-23.675,5.787c-9.007,5.355-9.707,13.145-9.707,15.404c0,8.988,8.376,18.06,27.09,18.06c21.76,0,33.146-12.005,33.146-23.863c0.002-8.771-5.141-13.101-10.6-17.698l-4.605-3.582c-1.423-1.179-3.195-2.646-3.195-5.364c0-2.672,1.772-4.436,3.336-5.992l0.163-0.165c4.973-3.917,10.609-8.358,10.609-17.964c0-9.658-6.035-14.649-8.937-17.048h7.663c0.094,0,0.188-0.026,0.266-0.077l6.601-4.15c0.188-0.119,0.276-0.348,0.214-0.562C63.037,0.147,62.839,0,62.617,0z M34.614,91.535c-13.264,0-22.176-6.195-22.176-15.416c0-6.021,3.645-10.396,10.824-12.997c5.749-1.935,13.17-2.031,13.244-2.031c1.257,0,1.889,0,2.893,0.126c9.281,6.605,13.743,10.073,13.743,16.678C53.141,86.309,46.041,91.535,34.614,91.535z M34.489,40.756c-11.132,0-15.752-14.633-15.752-22.468c0-3.984,0.906-7.042,2.77-9.351c2.023-2.531,5.487-4.166,8.825-4.166c10.221,0,15.873,13.738,15.873,23.233c0,1.498,0,6.055-3.148,9.22C40.94,39.337,37.497,40.756,34.489,40.756z" /> <path d="M94.982,45.223H82.814V33.098c0-0.276-0.225-0.5-0.5-0.5H77.08c-0.276,0-0.5,0.224-0.5,0.5v12.125H64.473c-0.276,0-0.5,0.224-0.5,0.5v5.304c0,0.275,0.224,0.5,0.5,0.5H76.58V63.73c0,0.275,0.224,0.5,0.5,0.5h5.234c0.275,0,0.5-0.225,0.5-0.5V51.525h12.168c0.276,0,0.5-0.223,0.5-0.5v-5.302C95.482,45.446,95.259,45.223,94.982,45.223z" /> </svg>Sign In with Google</button>

vertical-align: bottom; 應該這樣做。

 button { font-family: 'Texta-Regular', sans-serif; font-size: 2.7em; line-height: 1.2em; display: block; margin: 2em auto; padding: .3em 2em; text-align: center; border: none; border-radius: 5px; -webkitborder-radius: 5px; outline: none; background-color: #dd4b39; color: #fff; } .icon { width: 1em; vertical-align: bottom; margin-right: 40px; }
 <button> <svg version="1.1" fill="#fff" class="icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 96.828 96.827" xml:space="preserve"> <path d="M62.617,0H39.525c-10.29,0-17.413,2.256-23.824,7.552c-5.042,4.35-8.051,10.672-8.051,16.912c0,9.614,7.33,19.831,20.913,19.831c1.306,0,2.752-0.134,4.028-0.253l-0.188,0.457c-0.546,1.308-1.063,2.542-1.063,4.468c0,3.75,1.809,6.063,3.558,8.298l0.22,0.283l-0.391,0.027c-5.609,0.384-16.049,1.1-23.675,5.787c-9.007,5.355-9.707,13.145-9.707,15.404c0,8.988,8.376,18.06,27.09,18.06c21.76,0,33.146-12.005,33.146-23.863c0.002-8.771-5.141-13.101-10.6-17.698l-4.605-3.582c-1.423-1.179-3.195-2.646-3.195-5.364c0-2.672,1.772-4.436,3.336-5.992l0.163-0.165c4.973-3.917,10.609-8.358,10.609-17.964c0-9.658-6.035-14.649-8.937-17.048h7.663c0.094,0,0.188-0.026,0.266-0.077l6.601-4.15c0.188-0.119,0.276-0.348,0.214-0.562C63.037,0.147,62.839,0,62.617,0z M34.614,91.535c-13.264,0-22.176-6.195-22.176-15.416c0-6.021,3.645-10.396,10.824-12.997c5.749-1.935,13.17-2.031,13.244-2.031c1.257,0,1.889,0,2.893,0.126c9.281,6.605,13.743,10.073,13.743,16.678C53.141,86.309,46.041,91.535,34.614,91.535z M34.489,40.756c-11.132,0-15.752-14.633-15.752-22.468c0-3.984,0.906-7.042,2.77-9.351c2.023-2.531,5.487-4.166,8.825-4.166c10.221,0,15.873,13.738,15.873,23.233c0,1.498,0,6.055-3.148,9.22C40.94,39.337,37.497,40.756,34.489,40.756z" /> <path d="M94.982,45.223H82.814V33.098c0-0.276-0.225-0.5-0.5-0.5H77.08c-0.276,0-0.5,0.224-0.5,0.5v12.125H64.473c-0.276,0-0.5,0.224-0.5,0.5v5.304c0,0.275,0.224,0.5,0.5,0.5H76.58V63.73c0,0.275,0.224,0.5,0.5,0.5h5.234c0.275,0,0.5-0.225,0.5-0.5V51.525h12.168c0.276,0,0.5-0.223,0.5-0.5v-5.302C95.482,45.446,95.259,45.223,94.982,45.223z" /> </svg>Sign In with Google</button>

嗨,只需將此添加到以下課程中,您就會得到您想要的..!!

.icon {
    width: 1em;
    display: inline;
    margin-right: 40px;
    vertical-align: bottom;
}

恕我直言,一個正確的(2020 年)方法/避免該問題不是用負值重新調整,而是使用<text><tspan> (您仍然可以使用 CSS 解決)將其放置在 SVG 中:

css:

button svg text {
  font-family: 'Texta-Regular', sans-serif;
  font-size:   20pt;
  }

html:

<button>
  <svg viewBox="0 0 200 50">
    <rect rx="5" height="100%" width="100%"/>
    <!-- path d="bla,etc"/ -->
    <!-- path d="bla,etc"/ -->
    <text dx="0" dy="0" x="50%" y="50%" text-anchor="middle"><tspan dominant-baseline="middle">Sign In with Google</tspan></text>
  </svg>
</button>

請注意,Safari 希望 y 以<tspan>標簽為中心。

所需的邊界半徑由<rect> rx完成

這也是 SVG 2.0 - 但我想它在 1.0 中沒有什么不同。

<button>
    <svg viewBox="..." height="..." width="..." ...>
        <path ...>...</path>
    </svg>
    Your text
</button>

對於上述情況,在按鈕元素上設置這些屬性應該可以解決問題:

display: flex
text-align: center;

更多關於彈性:

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM