javascript - 根据父级的当前宽度将元素附加到父级和位置

标签 javascript jquery css cookies

我有一个进度条,指示页面的滚动进度。因此,如果我将页面向下滚动一半,进度条宽度将设置为 50%,因此它会根据我在页面上的位置不断变化。

(function(){
    var $w = $(window);
    var $prog = $('.progress-bar');

    var wh, h, sHeight;

    function setSizes(){
        wh = $w.height();
        h = $('#page-content-wrapper').height();
        sHeight = h - wh;
    }

    setSizes();

    $w.on('scroll', function(){
        var perc = Math.max(0, Math.min(1, $w.scrollTop()/sHeight));
        updateProgress(perc);
    }).on('resize', function(){
        setSizes();
        $w.trigger('scroll');
    });

    function updateProgress(perc){
        $prog.css({width : perc*100 + '%'});
    }

}());

我想做的是附加一个元素以直观地指示相对于进度条的书签位置。假设我想在单击书签按钮/链接时在进度条下方添加一个星号 (*)。

为此,我需要一种使用当前进度条宽度的方法,并使用它来设置附加元素的位置,我已经有了,但不确定如何在附加上下文中应用它。

$('#bookmark').on("click", function() { 
    $(".progress-bar").append("<div style='position:absolute; left:xxxx%'>*</div>");
});

谢谢

最佳答案

我重写了你的代码:

var w = $(window);
var prog = $('.progress-bar');
var wh, h, sHeight;

function setSizes() {
    wh = w.height();
    h = $('.text')
        .height();
    sHeight = h - wh;
}
setSizes();
w.on('scroll', function () {
        var perc = Math.max(0, Math.min(1, w.scrollTop() / sHeight));
        updateProgress(perc);
    })
    .on('resize', function () {
        setSizes();
        w.trigger('scroll');
    });

function updateProgress(perc) {
    prog.css({
        width: parseInt(perc * 100, 10) + '%'
    });
    if (perc <= 0) $('#c')
        .hide();
    else $('#c')
        .show(500);
}
$('#c')
    .hide();
$('#c')
    .click(function () {
        $('.star')
            .remove();
    });
$('.bk')
    .click(function () {
        var add = "";
        l = prog.width() - 10;
        t = prog.height() / 2;
        add = "<div class=\"star\" style=\" left:";
        add += l;
        add += "px; top:";
        add += t;
        add += "px;\">*</div>";
        $('body')
            .append(add);
    });

Demo JSfiddle

关于javascript - 根据父级的当前宽度将元素附加到父级和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27310951/

相关文章:

javascript - 使用变量时无效的 JSON 原语

javascript - 动态更改验证码语言

jquery - 删除后重命名属性名称

javascript - jQuery:如果声音按钮关闭,则静音所有声音

javascript - 如何更新多行字形的 ColumnDataSource 数据?

javascript - 在 Vue 3 中使用 Font Awesome

javascript - Jquery 使用 .button() 时未设置元素 ID

javascript - 淡化 div 中文本的底部或顶部

javascript - 显示/隐藏选项卡箭头以在溢出时导航其他选项卡

html - 表格 thead 和第一个 tbody 列在可滚动的 div 中保持固定