1. 富文本编辑器的实现步骤
- 添加如下的
layui
表单行:
<div class="layui-form-item">
<!-- 左侧的 label -->
<label class="layui-form-label">文章内容</label>
<!-- 为富文本编辑器外部的容器设置高度 -->
<div class="layui-input-block" style="height: 400px;">
<!-- 重要:将来这个 textarea 会被初始化为富文本编辑器 -->
<textarea name="content"></textarea>
</div>
</div>
- 导入富文本必须的
script
脚本:
<!-- 富文本 -->
<script src="/assets/lib/tinymce/tinymce.min.js"></script>
<script src="/assets/lib/tinymce/tinymce_setup.js"></script>
- 调用
initEditor()
方法,初始化富文本编辑器:
// 初始化富文本编辑器
initEditor()
2. 图片封面裁剪的实现步骤
- 在
<head>
中导入cropper.css
样式表:
<link rel="stylesheet" href="/assets/lib/cropper/cropper.css" />
- 在
<body>
的结束标签之前,按顺序导入如下的 js 脚本:
<script src="/assets/lib/jquery.js"></script>
<script src="/assets/lib/cropper/Cropper.js"></script>
<script src="/assets/lib/cropper/jquery-cropper.js"></script>
- 在表单中,添加如下的表单行结构:
<div class="layui-form-item">
<!-- 左侧的 label -->
<label class="layui-form-label">文章封面</label>
<!-- 选择封面区域 -->
<div class="layui-input-block cover-box">
<!-- 左侧裁剪区域 -->
<div class="cover-left">
<img id="image" src="/assets/images/sample2.jpg" alt="" />
</div>
<!-- 右侧预览区域和选择封面区域 -->
<div class="cover-right">
<!-- 预览的区域 -->
<div class="img-preview"></div>
<!-- 选择封面按钮 -->
<button type="button" class="layui-btn layui-btn-danger">选择封面</button>
</div>
</div>
</div>
- 美化的样式:
/* 封面容器的样式 */
.cover-box {
display: flex;
}
/* 左侧裁剪区域的样式 */
.cover-left {
width: 400px;
height: 280px;
overflow: hidden;
margin-right: 20px;
}
/* 右侧盒子的样式 */
.cover-right {
display: flex;
flex-direction: column;
align-items: center;
}
/* 预览区域的样式 */
.img-preview {
width: 200px;
height: 140px;
background-color: #ccc;
margin-bottom: 20px;
overflow: hidden;
}
- 实现基本裁剪效果:
// 1. 初始化图片裁剪器
var $image = $('#image')
// 2. 裁剪选项
var options = {
aspectRatio: 400 / 280,
preview: '.img-preview'
}
// 3. 初始化裁剪区域
$image.cropper(options)
3. 更换裁剪的图片
- 拿到用户选择的文件
var file = e.target.files[0]
- 根据选择的文件,创建一个对应的 URL 地址:
var newImgURL = URL.createObjectURL(file)
- 先
销毁
旧的裁剪区域,再重新设置图片路径
,之后再创建新的裁剪区域
:
$image
.cropper('destroy') // 销毁旧的裁剪区域
.attr('src', newImgURL) // 重新设置图片路径
.cropper(options) // 重新初始化裁剪区域
4. 将裁剪后的图片,输出为文件
$image
.cropper('getCroppedCanvas', { // 创建一个 Canvas 画布
width: 400,
height: 280
})
.toBlob(function(blob) { // 将 Canvas 画布上的内容,转化为文件对象
// 得到文件对象后,进行后续的操作
})
链接: 所需CSS和JS插件