2017-04-18 109 views
2

我正在嘗試創建一個位於購物車圖標頂部的徽章,並在購物車中包含物品數量。爲什麼我的徽章是橢圓形的?

由於某種原因,徽章是橢圓形而不是圓形。我究竟做錯了什麼?

const cartStyle = { 
    width: "48px", 
    height: "48px", 
    verticalAlign: "middle", 
    float: "right", 
    marginBottom: "0", 
    backgroundImage: `url(${ShoppingCart})` 
}; 

const badgeStyle = { 
    content: "0", 
    background: "white", 
    display: "inline", 
    position: "relative", 
    borderRadius: "50%", 
    width: "36px", 
    height: "36px", 
    padding: "8px", 
    left: "15px", 
    border: "2px solid #666", 
    color: "#666", 
    textAlign: "center" 
} 

class Cart extends Component { 
    render() { 
     return(
      <div className="cart" style={cartStyle}> 
       <div style={badgeStyle} > { this.props.cartProducts.length } </div> 
      </div> 
     ); 
    } 
} 

https://codepen.io/stoerebink/pen/QvjYpo

+1

您正在''顯示:inline'到'div',它不影響高度和寬度。 – Vucko

+1

使用'display:inline-block; 「它會工作。檢查工作示例:https://codepen.io/anon/pen/mmevXK –

回答

2

您需要使用內嵌塊顯示來調整元素的大小。最終的line-height居中文字:

.bla { 
 
    background: white; 
 
        display: inline-block; 
 
    position: relative; 
 
    border-radius: 50%; 
 
    width: 36px; 
 
    height: 36px; 
 
        line-height:36px; 
 
    padding: 8px; 
 
    left: 15px; 
 
    border: 2px solid black; 
 
    color: black; 
 
    text-align: center; 
 
}
<div class="bla">0</div>

+0

乾杯這工作! – stoerebink

-1

這是因爲它的內容。由於字體大小,徽章呈現橢圓形。設置字體大小爲0em,這將是一個很好的圓圈。

1

display: inline將該元素渲染爲內聯,因此寬度取決於內容。如果要指定寬度,請更改爲inline-block

0

您的顯示設置爲內聯,這意味着在div沒有它需要能夠影響width屬性和高度。將顯示內容設置爲內嵌塊,它將形成一個圓圈。如果你想垂直居中你的文本,設置行高與高度相同,所以在你的情況下,36px。