HTML小技巧:按钮中的文字换行 .

本文介绍了在网页设计中实现按钮内文字换行的两种方法:直接使用HTML输入标签的value属性进行换行以及将按钮制作成图片的方式。这两种方法能够帮助解决按钮文字过长的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般按钮的文字都是一行的。但是有的时候画面需要按钮中的文字换行。

刚开始有个开发人员说没法实现。\r\n 都用过了没有效果。其实google这个老师是非常强大的。

直接换行的方法:<input type="button" value="第一行文字 第二行文字" />


还有一种办法就是把按钮做成图片。这个应该是网站中经常使用的方法。


参考来自:http://blog.youkuaiyun.com/hantiannan/article/details/7659710
<template> <view class="container"> <!-- 搜索表单区域 --> <view class="search-card"> <view class="form-group title-group"> <text class="form-label">问卷标题:</text> <input v-model="formData.dcWjTitle" placeholder="请输入问卷标题" class="form-input title-input" /> </view> <view class="form-row"> <!-- 被测评人选择器 --> <view class="form-group form-group-half"> <text class="form-label">被测评人:</text> <view class="search-select-container"> <view class="input-container" @click="showBdrList = true"> <!-- 已选项显示 --> <view v-if="formData.dcId.length > 0" class="selected-display"> {{ selectedBdrLabel }} </view> <!-- 占位符 --> <text v-else-if="showBdrPlaceholder" class="placeholder-text"> 请选择被测评人 </text> <!-- 下拉箭头 --> <view class="dropdown-icon"> <text>▼</text> </view> </view> <!-- 下拉列表 --> <view v-if="showBdrList" class="dropdown-list"> <view class="search-box"> <input v-model="bdrSearchKeyword" placeholder="搜索被测评人" class="search-input" @input="filterBdrOptions" /> </view> <scroll-view scroll-y="true" class="dropdown-scroll"> <view v-for="(item, index) in filteredBdrOptions" :key="index" class="dropdown-item" :class="{ 'selected': formData.dcId[0] === item.value }" @click="handleBdrSelect(item)" > {{ item.label }} </view> <view v-if="filteredBdrOptions.length === 0" class="empty-option"> 无匹配结果 </view> </scroll-view> </view> <!-- 遮罩层 --> <view v-if="showBdrList" class="dropdown-mask" @click="showBdrList = false" ></view> </view> </view> <!-- 人员部门 --> <view class="form-group form-group-half"> <text class="form-label">人员部门:</text> <input v-model="formData.dcDept" placeholder="请输入部门" class="form-input" /> </view> </view> <!-- 提交状态和按钮组 --> <view class="form-row-bottom"> <!-- 提交状态 --> <view class="state-group"> <text class="form-label">提交状态:</text> <view class="search-select-container"> <view class="state-select-box" @click="toggleStateList"> <text class="selected-state"> {{ getStateLabel(formData.state) }} </text> <view class="dropdown-icon"> <text>▼</text> </view> </view> <!-- 状态下拉列表 --> <view v-if="showStateList" class="dropdown-list state-dropdown"> <view v-for="(state, index) in stateOptions" :key="index" class="dropdown-item" :class="{ 'selected': formData.state === state.value }" @click="handleStateSelect(state)" > {{ state.label }} </view> </view> <!-- 遮罩层 --> <view v-if="showStateList" class="dropdown-mask" @click="showStateList = false" ></view> </view> </view> <!-- 按钮组 --> <view class="button-group"> <button class="search-button" @click="handleSearch">搜索</button> <button class="reset-button" @click="handleReset">重置</button> </view> </view> </view> <!-- 数据显示区域 --> <view class="data-card"> <view class="card-header"> <button class="refresh-button" @click="refreshData">刷新数据</button> </view> <!-- 加载状态 --> <view v-if="loading" class="loading-container"> <view class="loading-spinner"></view> <text class="loading-text">加载中...</text> </view> <!-- 数据展示 --> <view v-else> <view v-for="(item, index) in surveyList" :key="index" class="data-card-item" > <view class="card-header-section"> <view class="card-title">{{ item.dcWjTitle }}</view> </view> <view class="card-body-section"> <view class="card-row"> <text class="card-label">被测评人:</text> <text class="card-value">{{ item.dcName }}</text> </view> <view class="card-row"> <text class="card-label">部门:</text> <text class="card-value">{{ item.dcDept }}</text> </view> <view class="card-row"> <text class="card-label">创建时间:</text> <text class="card-value">{{ item.createTime }}</text> </view> <view class="card-row"> <text class="card-label">提交时间:</text> <text class="card-value">{{ item.updateTime || '-' }}</text> </view> </view> <view class="card-footer-section"> <view class="status-container"> <view :class="[ 'status-tag', item.state === '1' ? 'status-submitted' : 'status-not-submitted' ]" > {{ item.state === '1' ? '已提交' : '未提交' }} </view> <view class="score">总分: {{ item.score || '0' }}</view> </view> <button class="view-button" @click="handleView(item)">编辑/查看</button> </view> </view> <!-- 空数据提示 --> <view v-if="surveyList.length === 0" class="empty"> <text>暂无数据</text> </view> </view> <!-- 分页控件 --> <view v-if="surveyList.length > 0" class="pagination-container"> <picker mode="selector" :range="[5, 10, 20, 50]" :value="[5, 10, 20, 50].indexOf(pagination.size)" @change="handleSizeChange" class="page-size-picker" > <view class="picker"> 每页 {{ pagination.size }} 条 </view> </picker> <view class="pagination-buttons"> <button :disabled="pagination.current === 1" @click="handlePageChange(pagination.current - 1)" class="page-button prev-button" > 上一页 </button> <text class="page-info"> 第 {{ pagination.current }} 页 / 共 {{ Math.ceil(pagination.total / pagination.size) }} 页 </text> <button :disabled="pagination.current >= Math.ceil(pagination.total / pagination.size)" @click="handlePageChange(pagination.current + 1)" class="page-button next-button" > 下一页 </button> </view> <text class="total-records">共 {{ pagination.total }} 条记录</text> </view> </view> </view> </template> <style scoped> .container { padding: 20rpx; background-color: #f5f5f5; min-height: 100vh; } /* 卷标题*/ .title-group { display: flex; align-items: center; gap: 20rpx; } /* 表单布局优化 */ .form-row { display: flex; flex-wrap: wrap; gap: 20rpx; margin-bottom: 20rpx; } .form-group { margin-bottom: 25rpx; width: 100%; } .form-group-half { flex: 1; min-width: 300rpx; } .form-label { font-size: 28rpx; color: #606266; font-weight: 500; white-space: nowrap; flex-shrink: 0; /* 防止标签被压缩 */ } .title-input { flex: 1; /* 输入框占据剩余空间 */ min-width: 0; /* 防止溢出 */ } .form-input { width: 100%; height: 80rpx; padding: 0 20rpx; border: 1px solid #dcdfe6; border-radius: 8rpx; font-size: 28rpx; background-color: #fff; box-sizing: border-box; } /* 搜索卡片优化 */ .search-card { background: #fff; border-radius: 16rpx; padding: 25rpx; margin-bottom: 25rpx; box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.05); } .button-group { display: flex; gap: 15rpx; flex-shrink: 0; } .search-button, .reset-button { width: 150rpx; height: 80rpx; line-height: 80rpx; font-size: 28rpx; border-radius: 8rpx; text-align: center; border: none; padding: 0; margin: 0; box-sizing: border-box; } /* 按钮悬停效果 */ .search-button:hover, .reset-button:hover { opacity: 0.9; transform: translateY(-2rpx); } .search-button:active, .reset-button:active { opacity: 1; transform: translateY(0); } .search-button { background-color: #409eff; color: #fff; } .reset-button { background-color: #f5f7fa; color: #606266; border: 1px solid #dcdfe6; } /* 被测评人选择器优化 */ .search-select-container { position: relative; width: 100%; } .input-container { position: relative; width: 100%; height: 80rpx; padding: 0 60rpx 0 20rpx; border: 1px solid #dcdfe6; border-radius: 8rpx; background-color: #fff; display: flex; align-items: center; box-sizing: border-box; } .selected-display { color: #303133; font-size: 28rpx; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; } .placeholder-text { color: #c0c4cc; font-size: 28rpx; flex: 1; } .dropdown-icon { position: absolute; right: 20rpx; top: 50%; transform: translateY(-50%); font-size: 24rpx; color: #606266; } .dropdown-list { position: absolute; top: 100%; left: 0; right: 0; max-height: 400rpx; background: #fff; border: 1px solid #dcdfe6; border-radius: 8rpx; z-index: 1000; box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.1); margin-top: 8rpx; } .search-box { padding: 15rpx; border-bottom: 1px solid #f0f2f5; } .search-input { width: 100%; height: 70rpx; padding: 0 20rpx; border: 1px solid #dcdfe6; border-radius: 8rpx; font-size: 28rpx; background-color: #f5f7fa; box-sizing: border-box; } .dropdown-scroll { max-height: 300rpx; } .dropdown-item { padding: 20rpx; font-size: 28rpx; color: #333; border-bottom: 1px solid #f0f2f5; } .dropdown-item.selected { background-color: #f5f7fa; color: #409eff; font-weight: 500; } .dropdown-item:last-child { border-bottom: none; } .dropdown-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: transparent; z-index: 999; } .empty-option { padding: 20rpx; text-align: center; color: #999; font-size: 28rpx; } /* 状态选择器优化 */ .state-select-box { position: relative; width: 100%; height: 80rpx; padding: 0 60rpx 0 20rpx; border: 1px solid #dcdfe6; border-radius: 8rpx; font-size: 28rpx; background-color: #fff; display: flex; align-items: center; box-sizing: border-box; } .selected-state { color: #303133; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .state-dropdown { max-height: 300rpx; } /* 数据卡片优化 */ .data-card { background: #fff; border-radius: 16rpx; padding: 25rpx; box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.05); } .card-header { margin-bottom: 25rpx; } .refresh-button { background-color: #409eff; color: #fff; height: 70rpx; line-height: 70rpx; font-size: 28rpx; border-radius: 8rpx; border: none; } .data-card-item { background: #fff; border-radius: 12rpx; padding: 25rpx; margin-bottom: 25rpx; box-shadow: 0 2rpx 6rpx rgba(0,0,0,0.03); border: 1px solid #ebeef5; } .card-header-section { padding-bottom: 15rpx; border-bottom: 1px solid #f0f2f5; margin-bottom: 15rpx; } .card-title { font-size: 32rpx; font-weight: bold; color: #303133; line-height: 1.4; word-break: break-word; } .card-body-section { margin-bottom: 15rpx; } .card-row { display: flex; margin-bottom: 12rpx; font-size: 28rpx; } .card-label { color: #606266; width: 150rpx; flex-shrink: 0; } .card-value { color: #303133; flex: 1; word-break: break-word; } .card-footer-section { display: flex; justify-content: space-between; align-items: center; padding-top: 15rpx; border-top: 1px solid #f0f2f5; } .status-container { display: flex; align-items: center; gap: 15rpx; } .status-tag { padding: 6rpx 18rpx; border-radius: 40rpx; font-size: 24rpx; font-weight: 500; } .status-submitted { background-color: #f0f9eb; color: #67c23a; border: 1px solid #e1f3d8; } .status-not-submitted { background-color: #fef0f0; color: #f56c6c; border: 1px solid #fde2e2; } .score { font-size: 28rpx; color: #e6a23c; font-weight: 500; } .view-button { background-color: #409eff; color: #fff; height: 60rpx; line-height: 60rpx; padding: 0 25rpx; font-size: 26rpx; border-radius: 40rpx; border: none; } /* 分页样式优化 */ .pagination-container { margin-top: 30rpx; display: flex; flex-direction: column; align-items: center; gap: 15rpx; } .page-size-picker { width: 200rpx; height: 60rpx; border: 1px solid #dcdfe6; border-radius: 8rpx; text-align: center; line-height: 60rpx; font-size: 26rpx; background: #fff; } .pagination-buttons { display: flex; align-items: center; gap: 15rpx; } .page-button { height: 60rpx; line-height: 60rpx; padding: 0 25rpx; font-size: 26rpx; border-radius: 8rpx; background-color: #f5f7fa; color: #606266; border: 1px solid #dcdfe6; } .page-button:disabled { opacity: 0.5; background-color: #fafafa; } .page-info { font-size: 26rpx; color: #606266; } .total-records { font-size: 26rpx; color: #909399; } /* 加载状态样式 */ .loading-container { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 80rpx 0; } .loading-spinner { width: 70rpx; height: 70rpx; border: 6rpx solid #f3f3f3; border-top: 6rpx solid #3498db; border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: 25rpx; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .loading-text { color: #666; font-size: 28rpx; } /* 空数据提示 */ .empty { text-align: center; padding: 80rpx 0; color: #999; font-size: 30rpx; } .form-row-bottom { display: flex; align-items: center; justify-content: space-between; gap: 20rpx; margin-top: 10rpx; } .state-group { flex: 1; display: flex; align-items: center; gap: 15rpx; } </style> 我想要编辑/查看按钮靠右
最新发布
07-26
<think>我们需要将“编辑/查看”按钮靠右显示。目前,在卡片底部(card-footer-section)中,状态和按钮是左右分布的(使用justify-content: space-between)。我们只需要将按钮放在右侧,状态信息放在左侧。 但是,观察当前结构,状态信息(状态标签和分数)和按钮都在一个flex容器(card-footer-section)中,且已经使用了justify-content: space-between,所以按钮已经在右侧了。 不过,您可能觉得按钮还不够靠右,或者希望按钮独立于状态信息,始终在最右侧。 如果当前布局不符合要求,我们可以调整样式,让按钮始终靠右。 修改方案: 1. 保持card-footer-section的flex布局,但将状态容器设置为flex:1,这样按钮就会紧贴右侧。 2. 或者,我们也可以将状态容器的宽度设置为自动,然后让按钮靠右。 但是,根据您的要求,我们只需确保按钮在右侧即可。当前代码中,状态容器和按钮是并排的,并且由于父容器使用了justify-content: space-between,按钮已经在右侧。 不过,如果状态信息很长,可能会挤压按钮的空间,导致按钮不在最右侧。为了避免这种情况,我们可以设置状态容器允许收缩,并且按钮不允许收缩。 修改样式如下: 在状态容器(status-container)上设置:flex-shrink: 0; 并且允许它收缩(默认是允许的,但我们可以设置不收缩,这里我们不需要设置不收缩,因为状态信息我们希望它收缩,而按钮我们希望它不收缩) 另一种方法是:将状态容器的flex-grow设置为1,这样按钮就会始终在最右侧。 当前代码中,状态容器没有设置flex属性,所以它不会占据剩余空间。我们可以让状态容器占据剩余空间,这样按钮就会紧贴右侧。 修改: 在状态容器(status-container)上添加:flex: 1; 这样它会占据剩余空间,按钮就会被推到右侧。 但是,这样修改后,状态信息和按钮之间的空间会被状态容器占据,按钮就会紧贴右侧。 所以,我们只需要在状态容器上添加flex:1即可。 具体修改如下: 在样式中的.status-container类中添加: flex: 1; /* 让状态容器占据剩余空间,这样按钮就被推到最右边 */ 同时,为了确保按钮不会因为状态信息过长而被挤下去,我们可以给按钮添加一个flex-shrink:0(禁止收缩)。 但是,当前按钮并没有设置flex属性,所以我们可以这样: 修改后的样式: .status-container { flex: 1; /* 新增 */ ...其他样式不变 } 这样修改后,按钮就会紧贴右侧了。 但是,请注意,这样修改后状态信息和分数会占据左侧所有空间,如果状态信息很长,可能会挤压按钮的显示空间(比如按钮被挤到下一行)。为了避免这种情况,我们可以给按钮添加一个外边距或者设置状态容器的最小宽度。 不过,在移动端,通常空间有限,状态信息不会太长(状态标签和分数都是简短的文字),所以应该没有问题。 我们按照这个思路修改。 另外,如果希望按钮在状态信息很长时也不换行,可以给按钮设置一个固定的宽度,或者使用white-space: nowrap。 由于按钮文字是固定的,宽度不会变化,所以我们可以给按钮设置一个固定宽度,或者不设置,由内容决定,并禁止换行。 修改后的按钮样式: .view-button { ...其他样式不变 white-space: nowrap; /* 防止按钮文字换行 */ flex-shrink: 0; /* 禁止按钮收缩 */ } 这样,按钮就会保持自身宽度,并且在状态容器占据剩余空间后,被推到最右边。 修改后的样式部分: 在.status-container中添加flex:1; 在.view-button中添加white-space: nowrap; flex-shrink:0; 但是,请注意,我们之前已经给按钮设置了flex-shrink:0吗?如果没有,现在加上。 具体修改代码: 在style中,找到.status-container,添加flex:1; 找到.view-button,添加white-space: nowrap; flex-shrink:0; 但是,我们也要注意,在状态信息很长的情况下,状态信息可能会和按钮重叠。为了避免这种情况,我们可以给状态容器设置overflow:hidden,并且文本超出显示省略号。 这样,在空间不足时,状态信息会显示省略号,而按钮始终完整显示。 在状态容器中,我们可以这样设置: overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 但是,状态容器内部有两个元素:状态标签和分数,它们是并排的。所以我们需要分别对它们设置。 因此,我们可以修改状态容器内部的元素: 将状态容器(.status-container)设置为: display: flex; align-items: center; overflow: hidden; /* 新增 */ 然后,给状态标签(.status-tag)和分数(.score)设置: white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 但是,这样两个元素都会变成省略号,可能不是我们想要的。我们可能希望分数和状态标签在一行显示,如果空间不够,分数可以省略,状态标签保持完整(因为状态标签更重要),或者反过来。 考虑到状态标签(已提交/未提交)很短,而分数可能较长(比如“总分:100分”),我们可以让分数在空间不足时省略。 所以,我们可以给分数(.score)设置: white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; /* 重要:允许收缩 */ 而状态标签保持原样,因为它很短。 但是,状态容器内的两个元素是并排的,状态标签不需要设置,分数需要设置可收缩。 具体修改: .status-container { flex: 1; /* 占据剩余空间 */ display: flex; align-items: center; gap: 15rpx; overflow: hidden; /* 新增,防止溢出 */ } .status-tag { /* 保持原样,不设置溢出,因为很短 */ flex-shrink: 0; /* 不收缩 */ } .score { flex: 1; /* 占据状态容器内的剩余空间 */ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; /* 允许收缩 */ } 这样,如果状态容器内的空间不足,分数会被截断显示省略号,而状态标签保持原样。 但是,这样修改后,分数可能会占据状态容器内的所有剩余空间,将状态标签挤到最左边?不会,因为状态标签设置了flex-shrink:0,它不会收缩,而分数会占据剩余空间,并且可以收缩。 这样,我们既保证了按钮在最右侧,又保证了状态信息不会溢出。 总结一下修改点: 1. 状态容器(.status-container)添加 flex:1 和 overflow:hidden。 2. 状态标签(.status-tag)添加 flex-shrink:0。 3. 分数(.score)添加 flex:1, white-space: nowrap, overflow: hidden, text-overflow: ellipsis, min-width:0。 4. 按钮.view-button)添加 white-space: nowrap; flex-shrink:0;(如果还没有的话) 但是,我们也要注意,在.card-footer-section中,我们原本就有: display: flex; justify-content: space-between; align-items: center; 所以,我们实际上有两种选择: 方案一:不修改状态容器,而是将状态容器设置为flex:1,这样它就会占据所有可用空间,而按钮被推到右侧。然后处理状态容器内部元素的溢出。 方案二:保持原样,只调整按钮的flex-shrink,并设置状态容器允许收缩,但是这样按钮不会在最右侧(当状态信息很长时,按钮可能会被挤到中间)。 我们采用方案一。 现在,我们按照方案一修改样式。 修改后的样式如下: 在style中修改:</think>要实现"编辑/查看"按钮靠右显示,您需要修改卡片底部区域的布局样式。以下是完整的修改方案: ```html <template> <!-- ... 其他代码保持不变 ... --> <view class="card-footer-section"> <view class="status-container"> <view :class="[ 'status-tag', item.state === '1' ? 'status-submitted' : 'status-not-submitted' ]" > {{ item.state === '1' ? '已提交' : '未提交' }} </view> <view class="score">总分: {{ item.score || '0' }}</view> </view> <!-- 修改按钮容器,添加 right-align 类 --> <view class="button-container"> <button class="view-button" @click="handleView(item)">编辑/查看</button> </view> </view> <!-- ... 其他代码保持不变 ... --> </template> <style scoped> /* ... 其他样式保持不变 ... */ /* 修改卡片底部区域样式 */ .card-footer-section { display: flex; justify-content: space-between; /* 确保两端对齐 */ align-items: center; padding-top: 15rpx; border-top: 1px solid #f0f2f5; } /* 状态容器样式保持不变 */ .status-container { display: flex; align-items: center; gap: 15rpx; flex-shrink: 0; /* 防止状态容器被压缩 */ } /* 新增按钮容器 */ .button-container { margin-left: auto; /* 将按钮推到最右边 */ } /* 按钮样式保持不变 */ .view-button { background-color: #409eff; color: #fff; height: 60rpx; line-height: 60rpx; padding: 0 25rpx; font-size: 26rpx; border-radius: 40rpx; border: none; white-space: nowrap; /* 防止按钮文字换行 */ } /* ... 其他样式保持不变 ... */ </style> ``` ### 关键修改点: 1. **添加按钮容器**: ```html <view class="button-container"> <button class="view-button">编辑/查看</button> </view> ``` 2. **修改CSS样式**: ```css /* 按钮容器右对齐 */ .button-container { margin-left: auto; } /* 防止状态容器被压缩 */ .status-container { flex-shrink: 0; } /* 确保按钮文字换行 */ .view-button { white-space: nowrap; } ``` ### 实现原理: 1. **Flex布局**: - 使用 `display: flex` 和 `justify-content: space-between` 创建左右两部分的布局 - 左侧是状态信息,右侧是按钮 2. **自动外边距**: - `margin-left: auto` 是Flex布局中将元素推到右侧的关键技巧 - 这会使按钮容器占据所有可用空间,从而将按钮推到最右边 3. **防止挤压**: - `flex-shrink: 0` 确保状态容器不会被压缩 - `white-space: nowrap` 防止按钮文字在空间不足时换行 ### 完整修改后的卡片底部区域代码: ```html <view class="card-footer-section"> <view class="status-container"> <view :class="[ 'status-tag', item.state === '1' ? 'status-submitted' : 'status-not-submitted' ]" > {{ item.state === '1' ? '已提交' : '未提交' }} </view> <view class="score">总分: {{ item.score || '0' }}</view> </view> <view class="button-container"> <button class="view-button" @click="handleView(item)">编辑/查看</button> </view> </view> ``` ### 响应式考虑: 1. **小屏幕适配**: ```css /* 在小屏幕上调整布局 */ @media (max-width: 480px) { .card-footer-section { flex-direction: column; /* 垂直布局 */ align-items: flex-start; /* 左对齐 */ gap: 15rpx; } .button-container { margin-left: 0; /* 重置外边距 */ width: 100%; /* 全宽 */ text-align: right; /* 按钮右对齐 */ } } ``` 2. **状态信息过长处理**: ```css .status-container { max-width: 70%; /* 限制状态容器宽度 */ overflow: hidden; /* 隐藏溢出内容 */ } .score { text-overflow: ellipsis; /* 超出显示省略号 */ white-space: nowrap; /* 禁止换行 */ } ``` 这样修改后,"编辑/查看"按钮将始终靠右显示,无论状态信息内容多少,同时保持良好的响应式表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值