Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Vanilla Javascript调整大小的文本区域_Javascript - Fatal编程技术网

使用Vanilla Javascript调整大小的文本区域

使用Vanilla Javascript调整大小的文本区域,javascript,Javascript,我基本上希望复制文本区域的可拖动调整大小功能,等等 我知道SO使用jQuery插件TextAreaResizer来实现这一点,但我想使用普通的javascript,这样我就可以了解它的实际工作原理。好吧,你为什么不抓住这个插件,看看它的源代码: ? 我知道你提到你想使用“香草”JavaScript,但是如果你想学习语言本身,使用jQuery不会有任何损失。jQuery提供了对JS的抽象,这是跨浏览器工作的真正PITA,主要是因为 如果你足够勇敢,你可以只使用JS——但这将需要更多的工作来获得很

我基本上希望复制文本区域的可拖动调整大小功能,等等


我知道SO使用jQuery插件TextAreaResizer来实现这一点,但我想使用普通的javascript,这样我就可以了解它的实际工作原理。

好吧,你为什么不抓住这个插件,看看它的源代码:

?

我知道你提到你想使用“香草”JavaScript,但是如果你想学习语言本身,使用jQuery不会有任何损失。jQuery提供了对JS的抽象,这是跨浏览器工作的真正PITA,主要是因为


如果你足够勇敢,你可以只使用JS——但这将需要更多的工作来获得很少的额外学习收益。当你头痛时,不要告诉我我没有警告你。

好吧,以下是你需要采取的基本步骤:

  • 从DOM中删除目标
    textarea

  • 创建一个
    div

  • 将删除的
    textarea
    放入新创建的
    div
    中,并设置样式,使其始终占据
    div的所有可用区域

  • 为拖动控制柄添加一个元素并设置其样式(可能也是一个
    div

  • onmousedown
    onmousemove
    事件处理程序附加到拖动句柄元素,并将包装器
    div
    重新插入DOM

  • mousedown
    事件中,记录鼠标坐标

  • mousemove
    事件中,获取当前鼠标坐标,并使用先前记忆的坐标计算增量

  • 将包装器
    div
    size设置为其当前大小加上您计算的增量(当增量为负值时,大小将减小)


  • 这是您需要采取的基本步骤,但还有一些细节需要解决。

    想要学习如何在没有第三方图书馆的情况下工作是很好的,但这并不意味着您无法从中学习。jQuery只是一个简单的Javascript库,没有其他语言混合在其中

    似乎有这样一种普遍的观念,即某种程度上存在“jQuery Javascript”和“香草Javascript”,但在大多数情况下,jQuery只是一个预先编写的代码库,可以为您处理许多更烦人的部分。您可以通过查看jQuery的工作方式并自己编写相应的代码来了解如何在不依赖jQuery的情况下完成这项工作。一般技术基本相同


    在自定义代码中,最大的区别在于您可能不想重新创建整个选择器引擎(它允许您编写类似于
    $(“div.foo”)
    的内容,以使用类foo查找div)。相反,您应该替换更适合您的具体情况的元素选择和创建逻辑。

    因为我不知道jQuery以及它是用jQuery编写的
    我想使用普通的javascript,这样我就可以了解它的实际工作原理。
    @Chris jQuery的所有方法都只是用javascript编写的助手。+1表示希望了解它的实际工作原理。虽然我想你要做一些严肃的工作,但这不是小事