经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
Element FORM结合Vue实现横向排列表单项
来源:cnblogs  作者:授客  时间:2021/3/29 8:56:03  对本文有异议

结合Vue实现横向排列表单项

前言

默认的,ElementUIForm表单项(控件)是垂直排列,即一行显示一个表单项。但是在实际应用中,有时候会需要一行显示多个表单项。针对这类需求,笔者提供以下解决方案

解决方案

1、修改表单项.el-form-item样式

如下,增加display属性,设置值为inline-block !important; 因为默认的,表单项为块元素,这样设置以后,可以让表单项变成内联元素,这样表单项就可以横向排列在一起了

  1. .el-form-item {
  2. display: inline-block !important;
  3. }

2、修改表单项.el-form-item__label样式

如下,设置displaynone,即隐藏自带的表单项标签,然后设置width0px !important;,避免被隐藏 标签继续占用空间

  1. .el-form-item__label {
  2. display: none;
  3. width: 0px !important;
  4. }

这样以后,使用<span>labelName</span>作为自定义标签项

3、修改表单项.el-form-item__content样式

如下,避免表单项在视觉上看上去两头占了很大空白

  1. .el-form-item__content {
  2. margin-left: 3px !important;
  3. margin-right: 3px !important;
  4. }

4、使用rowcol组件控制哪些表单项归属同一行、同一列

应用举例

  1. <el-form
  2. :model="loadSettingsForm"
  3. :rules="loadSettingsFormRules"
  4. ref="loadSettingsForm"
  5. label-width="100px"
  6. class="load-settings-form"
  7. >
  8. <el-row>
  9. <el-col>
  10. <span>场景名称</span>
  11. <el-form-item prop="name">
  12. <el-input v-model="loadSettingsForm.name" maxlength="50" />
  13. </el-form-item>
  14. </el-col>
  15. </el-row>
  16. <el-row>
  17. <el-col>
  18. <span>是否梯度加压</span>
  19. <el-form-item>
  20. <el-radio v-model="loadSettingsForm.isSteppingPressure" :label="true"></el-radio>
  21. <el-radio v-model="loadSettingsForm.isSteppingPressure" :label="false"></el-radio>
  22. </el-form-item>
  23. </el-col>
  24. </el-row>
  25. <div class="el-form-row-wrapper" v-if="loadSettingsForm.isSteppingPressure">
  26. <el-row>
  27. <el-col>
  28. <span>初始启动</span>
  29. <el-form-item prop="initialUserNum">
  30. <el-input
  31. v-model="loadSettingsForm.initialUserNum"
  32. maxlength="2"
  33. oninput="value=value.replace(/[^\d]/g,'')"
  34. />
  35. </el-form-item>
  36. <span>个用户,每隔</span>
  37. <el-form-item prop="interval">
  38. <el-input
  39. v-model="loadSettingsForm.interval"
  40. maxlength="4"
  41. oninput="value=value.replace(/[^\d]/g,'')"
  42. />
  43. </el-form-item>
  44. <span>秒,</span>
  45. </el-col>
  46. </el-row>
  47. <el-row>
  48. <el-col>
  49. <span>按每秒启动</span>
  50. <el-form-item prop="spawnRate">
  51. <el-input
  52. v-model="loadSettingsForm.spawnRate"
  53. maxlength="2"
  54. oninput="value=value.replace(/[^\d]/g,'')"
  55. />
  56. </el-form-item>
  57. <span>个用户的速率增加</span>
  58. <el-form-item prop="add">
  59. <el-input
  60. v-model="loadSettingsForm.add"
  61. maxlength="2"
  62. oninput="value=value.replace(/[^\d]/g,'')"
  63. />
  64. </el-form-item>
  65. <span>个用户,直至增加到</span>
  66. <el-form-item prop="targetUserCount">
  67. <el-input
  68. v-model="loadSettingsForm.targetUserCount"
  69. maxlength="6"
  70. oninput="value=value.replace(/[^\d]/g,'')"
  71. />
  72. </el-form-item>
  73. <span>个用户</span>
  74. </el-col>
  75. </el-row>
  76. </div>
  77. <div class="el-form-row-wrapper" v-else>
  78. <el-row>
  79. <el-col>
  80. <span>按每秒启动</span>
  81. <el-form-item prop="spawnRate">
  82. <el-input
  83. v-model="loadSettingsForm.spawnRate"
  84. maxlength="2"
  85. oninput="value=value.replace(/[^\d]/g,'')"
  86. />
  87. </el-form-item>
  88. <span>个用户的速率启动</span>
  89. <el-form-item prop="targetUserCount">
  90. <el-input
  91. v-model="loadSettingsForm.targetUserCount"
  92. maxlength="6"
  93. oninput="value=value.replace(/[^\d]/g,'')"
  94. />
  95. </el-form-item>
  96. <span>个用户</span>
  97. </el-col>
  98. </el-row>
  99. </div>
  100. <div>
  101. <el-row>
  102. <el-col>
  103. <el-radio
  104. v-model="loadSettingsForm.loadRunMode"
  105. :label="1"
  106. style="margin-right:0px"
  107. >每个用户运行</el-radio>
  108. <el-form-item prop="iterationNumEachUser">
  109. <el-input
  110. v-model="loadSettingsForm.iterationNumEachUser"
  111. maxlength="18"
  112. oninput="value=value.replace(/[^\d]/g,'')"
  113. />
  114. </el-form-item>
  115. <span></span>
  116. <el-radio
  117. v-model="loadSettingsForm.loadRunMode"
  118. :label="2"
  119. style="margin-left:20px; margin-right:0px;"
  120. >持续运行</el-radio>
  121. <el-form-item prop="holdLoadTime">
  122. <el-input
  123. v-model="loadSettingsForm.holdLoadTime"
  124. maxlength="18"
  125. oninput="value=value.replace(/[^\d]/g,'')"
  126. />
  127. </el-form-item>
  128. <span></span>
  129. </el-col>
  130. </el-row>
  131. </div>
  132. <div class="el-form-row-wrapper">
  133. <el-row>
  134. <el-col>
  135. <span>在开始下一轮迭代之前</span>
  136. <el-form-item style="width:80px">
  137. <el-radio v-model="loadSettingsForm.iterationWaitModel" :label="1">固定等待</el-radio>
  138. </el-form-item>
  139. <el-form-item prop="iterationWaitTime">
  140. <el-input
  141. v-model="loadSettingsForm.iterationWaitTime"
  142. maxlength="6"
  143. oninput="value=value.replace(/[^\d]/g,'')"
  144. />
  145. </el-form-item>
  146. <span></span>
  147. <el-form-item style="width:110px">
  148. <el-radio
  149. v-model="loadSettingsForm.iterationWaitModel"
  150. :label="2"
  151. style="margin-left:30px"
  152. >随机等待</el-radio>
  153. </el-form-item>
  154. <el-form-item prop="iterationMinWait">
  155. <el-input
  156. v-model="loadSettingsForm.iterationMinWait"
  157. maxlength="6"
  158. oninput="value=value.replace(/[^\d]/g,'')"
  159. />
  160. </el-form-item>
  161. <span></span>
  162. <el-form-item prop="iterationMaxWait">
  163. <el-input
  164. v-model="loadSettingsForm.iterationMaxWait"
  165. maxlength="6"
  166. oninput="value=value.replace(/[^\d]/g,'')"
  167. />
  168. </el-form-item>
  169. <span></span>
  170. </el-col>
  171. </el-row>
  172. <el-row>
  173. <el-col>
  174. <span>最后每秒停止</span>
  175. <el-form-item prop="stopRate">
  176. <el-input
  177. v-model="loadSettingsForm.stopRate"
  178. maxlength="2"
  179. oninput="value=value.replace(/[^\d]/g,'')"
  180. />
  181. </el-form-item>
  182. <span>个用户</span>
  183. </el-col>
  184. </el-row>
  185. </div>
  186. <el-row>
  187. <el-col>
  188. <span>迭代模式</span>
  189. <el-form-item>
  190. <el-radio v-model="loadSettingsForm.iterationMode" :label="1">用例串行</el-radio>
  191. <el-radio v-model="loadSettingsForm.iterationMode" :label="2">用例权重</el-radio>
  192. <el-radio v-model="loadSettingsForm.iterationMode" :label="3">用例随机</el-radio>
  193. </el-form-item>
  194. </el-col>
  195. </el-row>
  196. </el-form>
  197. </template>
  198. <script>
  199. export default {
  200. data() {
  201. return {
  202. loadSettingsForm: {
  203. name: "",
  204. host: "",
  205. isSteppingPressure: false, // 是否梯度加压 true-是 否-false
  206. loadRunMode: 1, // 运行方式 1-按次数运行 2-按时间运行
  207. initialUserNum: 10,
  208. interval: 180,
  209. spawnRate: 5,
  210. add: 10,
  211. targetUserCount: 1,
  212. holdLoadTime: 1800,
  213. stopRate: 5,
  214. iterationNumEachUser: 1,
  215. iterationWaitModel: 1, // 1-固定等待 2-随机等待
  216. iterationWaitTime: 0,
  217. iterationMinWait: 0,
  218. iterationMaxWait: 5,
  219. iterationMode: 1 //迭代模式 1 - 用例串行 2 - 用例权重 3 - 用例随机
  220. },
  221. loadSettingsFormRules: {
  222. name: [{
  223. required: true, trigger: "blur", message: "此配置项必填"
  224. },
  225. { min: 1, max: 50, message: "长度在 1 到 50 个字符", trigger: "blur" }
  226. ],
  227. targetUserCount: [
  228. { required: true, message: "此配置项必填", trigger: "blur" }
  229. ],
  230. spawnRate: [{ required: true, message: "此配置项必填" }],
  231. iterationNumEachUser: [
  232. {
  233. required: this.loadSettingsForm.loadRunMode == 1,
  234. message: "此配置项必填",
  235. trigger: "blur"
  236. }
  237. ],
  238. holdLoadTime: [
  239. {
  240. required: !(this.loadSettingsForm.loadRunMode == 1),
  241. message: "此配置项必填",
  242. trigger: "blur"
  243. }
  244. ],
  245. stopRate: [
  246. {
  247. required: true,
  248. message: "此配置项必填",
  249. trigger: "blur"
  250. }
  251. ]
  252. }
  253. };
  254. },
  255. watch: {
  256. "loadSettingsForm.loadRunMode": {
  257. handler(newValue, oldValue) {
  258. this.loadSettingsFormRules.iterationNumEachUser[0].required = !this
  259. .loadSettingsFormRules.iterationNumEachUser[0].required;
  260. this.loadSettingsFormRules.holdLoadTime[0].required = !this
  261. .loadSettingsFormRules.holdLoadTime[0].required;
  262. this.$nextTick(() => {
  263. this.$refs.loadSettingsForm.clearValidate();
  264. })
  265. },
  266. },
  267. "loadSettingsForm.isSteppingPressure": {
  268. handler(newValue, oldValue) {
  269. this.$nextTick(() => {
  270. this.$refs.loadSettingsForm.clearValidate();
  271. })
  272. },
  273. }
  274. }
  275. };
  276. </script>
  277. <style lang="scss">
  278. .load-settings-form {
  279. padding-right: 20px;
  280. padding-left: 20px;
  281. .el-form-item__label {
  282. display: none;
  283. width: 0px !important;
  284. }
  285. .el-form-item__content {
  286. margin-left: 3px !important;
  287. margin-right: 3px !important;
  288. }
  289. .el-form-item {
  290. display: inline-block !important;
  291. }
  292. .el-form-row-wrapper {
  293. .el-form-item__content {
  294. width: 85px;
  295. }
  296. }
  297. }
  298. </style>

效果截图

原文链接:http://www.cnblogs.com/shouke/p/14587218.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号