vue 图片写入文字,图片注入文字,图片添加文字

添加的文字是写入图片的,文字会随着图片的大小、位置改变而改变

完成的效果:
在这里插入图片描述
在这里插入图片描述

代码:

<template>
    <div>
        <div>写入前</div>
        <img src="https://img0.baidu.com/it/u=1384155777,1106731832&fm=253&fmt=auto&app=138&f=JPEG?w=600&h=400" />
        <div>写入后</div>
        <img :src="currentImg">
    </div>
</template>
<script>
export default {
    data() {
        return {
            currentImg: ""
        }
    },
    mounted() {
        this.addTextEvent()
    },
    methods: {
        addTextEvent() {
            var _this = this
            let canvas = document.createElement("canvas");
            canvas.width = 600;
            canvas.height = 400;
            let myImage = new Image();
            myImage.src = "https://img0.baidu.com/it/u=1384155777,1106731832&fm=253&fmt=auto&app=138&f=JPEG?w=600&h=400";  // 需要添加文字的图片
            myImage.crossOrigin = "Anonymous";
            let context = canvas.getContext("2d");
            myImage.onload = function () {
                context.drawImage(myImage, 0, 0, canvas.width, canvas.height);
                context.font = "20px Courier New";
                context.fillStyle = 'red'
                // context.textAlign = 'end' //文字右对齐
                context.fillText("我是写入的文字", 250, 350);  // 文字的内容和位置
                let base64 = canvas.toDataURL("image/png"); // "image/png" 这里注意一下
                _this.currentImg = base64
            }
        }
    },
}
</script>
### 关于 `v-html` 中为元素添加样式的实现方法 在 Vue.js 的开发过程中,如果需要通过 `v-html` 动态渲染 HTML 并为其添加样式,则需要注意以下几点: #### 使用 `v-html` 渲染带样式的动态内容 `v-html` 是用于将字符串作为 HTML 插入到 DOM 节点中的指令。然而,它不会自动解析或绑定 Vue 数据属性或事件监听器。因此,在使用 `v-html` 时,可以通过嵌套 CSS 类名或者内联样式来定义目标元素的外观。 以下是具体的实现方式以及代码示例: ```html <template> <div> <!-- 使用 v-html 渲染带有样式的 HTML --> <div v-html="dynamicContent"></div> </div> </template> <script> export default { data() { return { dynamicContent: '<p style="color:red; font-weight:bold;">这是一个红色加粗的文字。</p>' + '<span class="flashing-text">这是闪烁的文字。</span>' }; } }; </script> <style> /* 定义闪烁效果 */ .flashing-text { animation: flash 1s infinite; } @keyframes flash { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } } </style> ``` 上述代码展示了如何利用 `v-html` 将包含样式的 HTML 字符串注入到页面中[^3]。其中: - **内联样式**被直接写入到 `<p>` 标签中,从而实现了颜色和字体加粗的效果。 - **CSS 类名 `.flashing-text`** 则通过外部样式表定义了一个简单的动画效果,使得指定的内容能够按照预设的时间间隔不断闪烁。 值得注意的是,当采用这种方式时需格外小心 XSS 攻击风险,因为任何未经验证的数据都可能成为潜在的安全隐患[^4]。 --- #### 结合 `v-if` 和 `v-show` 控制显示状态下的样式调整 对于希望进一步控制某些条件触发下特定样式的变化场景来说,可以联合运用 `v-if` 或者 `v-show` 来达到目的。例如下面的例子演示了基于布尔值切换两种不同表现形式的方法: ```html <div :class="{ 'hidden-element': isHidden }"> 这是一个可隐藏/可见的段落。 </div> <button @click="isHidden = !isHidden">Toggle Visibility</button> <style> .hidden-element { display: none; /* 对应 v-show 行为模拟 */ } </style> ``` 这里我们创建了一个按钮用来改变变量 `isHidden` 的状态,并据此决定是否应用名为 `hidden-element` 的类去影响实际呈现出来的视觉效果[^5]。 --- #### 总结 综上所述,虽然无法像常规组件那样直接操作由 `v-html` 引入的内容节点上的数据绑定机制,但是借助恰当组合静态模板编写技巧加上灵活运用标准 Web 技术手段依旧可以让开发者轻松完成大多数需求任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值