如何使用多分辨率字体大小对齐div中间的文本

时间:2013-09-11 13:14:17

标签: jquery html css css3

我创建了一个块,它包含两种不同类型的文本,一种代表必须位于块右上方的符号,而另一种跨度文本是必须显示在div中间的数字。

问题是无论我做什么我都无法使我的文本编号位于该div的中间位置。其次,相同的文字,如果我使用不同的分辨率比我的盒子工作正常,它通过我的JS代码自动重新调整大小和调整其宽度和高度,但字体始终保持相同的大小。我已经使用了字体大小的百分比,因为它会增加更大分辨率的大小,但它没有用。我必须在手机中使用这个html,并且每个手机都有不同的分辨率,这个块必须是shirnk或根据分辨率大小变大,但Font根本没有调整。我是css的新人,html5帮助我实现这个目标。

这是我的代码的小提琴预览 http://jsfiddle.net/E2vbe/

这是我的代码

$(function() {
    var pilewidth2 = $('#A').width();
    $('#A').height(pilewidth2);
    $('#B').height(pilewidth2);
}); //this make my div with same height and width on any resolution

<div id="A" style="vertical-align:middle;" class="cardPile2">
    <span class="TileScore">$</span>
    <span class="TileCharacter">44</span>
</div>
<div id="B" class="cardPile2">
    <span class="TileScore">%</span>
    <span class="TileCharacter">33</span>
</div>

我的css

.cardPile2 {
    margin: 0 auto;
    background: #ffd;
    float: left;
    width: 9%;
    padding-bottom: 0;
    border: 1px solid #333;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    margin: 0 0 0 5px;
    background: #666;
    color: #fff;
    opacity:0.9;
    text-align:center;
    vertical-align:middle;
}

.TileScore
{
    float:right;font-size:small;padding-right:10px;
}

.TileCharacter
{
    color:yellow;
}

4 个答案:

答案 0 :(得分:1)

查看此Working Fiddle

我的解决方案在不修复行高的情况下工作(最好不要修复它,如果是多行或不同的字体大小)

上测试:IE10,IE9,FF,Chrome

不更改标记:将其添加到 CSS

.TileCharacter
{
    color:yellow; /*From your CSS*/
    display: inline-block;
    text-align:center;
    width: 100%;
}
.TileCharacter:before
{
    content: '';
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

您也可以删除text-align:center;&amp;来自vertical-align:middle;规则的.cardPile2

答案 1 :(得分:1)

我创建了一个函数来执行你正在寻找的东西(我想)。我相信它会在大多数情况下对你有用,如果不是所有情况......多行等......

我还必须更新一些样式才能完成,但这里是WORKING FIDDLE

这是功能:

function positionText() {
    $('.cardPile2').each(function (i, ele) {
        var width = $(this).outerWidth();
        $(this).css({height: width + 'px'});

        // scale font sizes
        var charFontScale = 16/86;
        var scrFontScale = 13/86;
        var charFontSize = Math.round(width * charFontScale);
        var scrFontSize = Math.round(width * scrFontScale);

        // top right align the characters
        var chr = $(this).find('.TileCharacter').css({'font-size': charFontSize + 'px'});
        var chrWidth = $(chr).outerWidth();
        var chrHeight = $(chr).outerHeight();
        $(chr).css({top: Math.floor(width/2 - chrHeight/2) + 'px', left: Math.floor(width/2 - chrWidth/2) + 'px'});

        // center the scores
        var score = $(this).find('.TileScore').css({'font-size': scrFontSize + 'px'});
        var scrWidth = $(score).outerWidth();
        $(score).css({left: (width - scrWidth) + 'px'});
    });
}

如果能为您完成工作,请告诉我。

修改

我已经更新了小提琴以按比例缩放字体。编辑功能在上面。

答案 2 :(得分:0)

将line-height css属性应用于此类

.TileScore
{
    float:right;font-size:small;padding-right:10px;
    line-height:4;
}

.TileCharacter
{
    line-height:4;
    color:yellow;
}

答案 3 :(得分:0)

为了使其响应,我给了padding%。这可能就是你想要的。 http://jsfiddle.net/E2vbe/15/ font-size可以使用媒体查询而不是JS来更改{{1}}以获得不同的屏幕分辨率。