使用键盘和鼠标更改字体大小

时间:2016-01-02 02:49:09

标签: javascript

我试图通过按某些东西来改变字体大小。 例如:

  1. ' Alt键'和' +'
  2. ESC
  3. 我遇到Esc按钮时遇到问题。我知道Esc按钮keyCode是27,但它似乎无法正常工作。我甚至尝试使用onkeyup,但这也没有帮助。基本上当我按下Esc按钮时,它应该将文本返回到30pt的起始位置。我很感激能解决这个问题的任何答案。

    <html>
    <head>
    <style>p{font-size: 30pt;}</style>
    </head>
    <body onmousedown="changeSize(event)" onkeyup="changeSize(event)">
         <p>Text1</p>
         <p>Text2</p>
         <p>Text3</p>
    </body>
    
    <script>
        var start = 30;
        var min = 10;
        var max = 50;
        function changeSize(e) {
        var b = e.keyCode;
        var c = e.button; 
        var fontSized = document.getElementsByTagName("p");
        if (e.altKey){
                if (b == 107){
                    if (start <=max && start >=min){
                    start += 5;
                        for (i=0; i<=fontSized.length; i++){
                            fontSized[i].style.fontSize = start + "pt";
                        };  
                    } 
                }
            }
        if (b == 27){
            start = 30;
            for (i=0; i<=fontSized.length; i++){
                fontSized[i].style.fontSize = start + "pt";
            };  
        }
        }
    </script>
    </html>
    

2 个答案:

答案 0 :(得分:0)

您的if (b == 27) {位于if (e.altKey) {区域内,因此仅当按下alt时它才会起作用。 您的代码应如下所示:

if (e.altKey){
    if (b == 107){
        if (start <=max && start >=min){
            start += 5;
            for (i=0; i<=fontSized.length; i++){
                fontSized[i].style.fontSize = start + "pt";
            };  
        } 
    }
}
if (b == 27){
    start = 30; // start == 30 is a comparator, and does not set start to 30
    for (i=0; i<=fontSized.length; i++){
        fontSized[i].style.fontSize = start + "pt";
    };  
}

请注意start == 30后的if (b == 27)已更改为start = 30

编辑:在尝试完代码后,一切似乎都正常,但要增加字体大小,您必须执行Alt +&#39; +&#39; (在数字小键盘上!)。你可能想考虑做Alt + Shift +&#39; =&#39;或者只是Alt +&#39; =&#39;

供参考,这是我的代码:

<html>
<head>
<style>p{font-size: 30pt;}</style>
</head>
<body onmousedown="changeSize(event)" onkeyup="changeSize(event)">
     <p>Text1</p>
     <p>Text2</p>
     <p>Text3</p>
</body>

<script>
    var start = 30;
    var min = 10;
    var max = 50;
    function changeSize(e) {
    var b = e.keyCode;
    var c = e.button; 
    var fontSized = document.getElementsByTagName("p");
    if (e.altKey) {
        if (b == 187){ // Now the combination is Alt + '='
            if (start <=max && start >=min){
                start += 5;
                    for (i=0; i<=fontSized.length; i++){
                        fontSized[i].style.fontSize = start + "pt";
                    };  
            } 
        }
    }
    if (b == 27){
            start = 30;
            for (i=0; i<=fontSized.length; i++){
                fontSized[i].style.fontSize = start + "pt";
            };  
        }
    }
</script>
</html>

答案 1 :(得分:0)

通常在这些情况下,您需要阻止事件传播,因为它会遍历所有父项,直到它到达浏览器。