#optionsframework { max-width: 855px; background: #fff; } #optionsframework h3 { margin: 0; padding: 12px 10px; border-bottom: 1px solid #ddd; background-color: #f1f1f1; cursor: default; } #optionsframework p { margin-bottom: 0; padding-bottom: 10px; } #optionsframework .section { padding: 10px 10px 0; } #optionsframework .group { padding-bottom: 40px; } #optionsframework .section .controls { float: left; padding-right: 2%; width: 54%; min-width: 350px; } #optionsframework .section .explain { float: left; max-width: 38%; color: #777; font-size: 12px; line-height: 16px; } #optionsframework .section-checkbox .controls { width: 98%; } #optionsframework .section-checkbox .explain { max-width: 94%; } #optionsframework .controls input[type="text"], #optionsframework .controls input[type="password"] { width: 100%; } #optionsframework .controls input[type="text"].wp-color-picker { width: 65px; } #optionsframework .controls select, #optionsframework .controls textarea { margin-bottom: 10px; width: 100%; } #optionsframework .section-radio label, #optionsframework .section-multicheck label { float: left; margin-bottom: 5px; max-width: 90%; line-height: 16px; } #optionsframework input.checkbox, #optionsframework input.of-radio { float: left; clear: both; margin: 0 10px 5px 0; } #optionsframework .section-typography .controls { float: none; width: auto; } #optionsframework .section-typography .explain { float: none; width: auto; } #optionsframework .controls .of-typography-size { float: left; width: 80px; } #optionsframework .controls .of-typography-unit { float: left; margin-left: 5px; width: 50px; } #optionsframework .controls .of-typography-face { float: left; margin-left: 5px; width: 100px; } #optionsframework .controls .of-typography-style { float: left; margin-right: 5px; margin-left: 5px; width: 80px; } #optionsframework .section-typography .wp-picker-container { margin-top: 2px; } #optionsframework .of-background-properties { clear: both; margin-top: 18px; } #optionsframework .controls .of-background-repeat { float: left; margin-right: 5px; width: 125px; } #optionsframework .controls .of-background-position { float: left; margin-right: 5px; width: 125px; } #optionsframework .controls .of-background-attachment { float: left; margin-right: 5px; width: 125px; } #optionsframework .section-background .wp-picker-container { margin-bottom: 10px; } #optionsframework .controls .of-radio-img-img { float: left; display: none; margin: 0 5px 10px 0; border: 3px solid #f9f9f9; cursor: pointer; } #optionsframework .controls .of-radio-img-selected { border: 3px solid #ccc; } #optionsframework .controls .of-radio-img-img:hover { opacity: 0.8; } #optionsframework .controls .of-border-width { float: left; width: 80px; } #optionsframework .controls .of-border-style { float: left; width: 120px; } #optionsframework .hide { display: none; } #optionsframework .of-option-image { margin: 3px 0 18px 0; max-width: 340px; } #optionsframework .mini .controls select, #optionsframework .section .mini .controls { width: 140px; } #optionsframework .mini .controls input, #optionsframework .mini .controls { width: 140px; min-width: 140px; } #optionsframework .mini .explain { max-width: 74%; } #optionsframework .section-info { padding-bottom: 7px; } #optionsframework .controls input.upload { width: 80%; } #optionsframework .screenshot { position: relative; float: left; margin-top: 3px; margin-left: 1px; width: 344px; } #optionsframework .screenshot img { float: left; margin-bottom: 10px; padding: 4px; max-width: 334px; border-color: #ccc #eee #eee #ccc; border-style: solid; border-width: 1px; background: #fafafa; } #optionsframework .screenshot .remove-image { position: absolute; bottom: 4px; left: -4px; float: left; display: block; padding: 0; width: 16px; height: 16px; border: medium none; background: url("../images/ico-delete.png") no-repeat; text-indent: -9999px; } #optionsframework .screenshot .no_image .file_link { margin-left: 20px; } #optionsframework .screenshot .no_image .remove-button { bottom: 0px; } #optionsframework .reset-button { float: left; cursor: pointer; } #optionsframework-submit { padding: 7px 10px; border-top: 1px solid #ddd; background-color: #f1f1f1; } #optionsframework .button-primary { float: right; } #optionsframework .section:after { display: table; content: ""; } #optionsframework .section:after { clear: both; } #optionsframework .about-content { padding: 10px 20px; } #optionsframework .about-content img { width: 100%; height: auto; } #optionsframework .about-content h4 { margin-top: 20px; margin-bottom: 16px; padding-bottom: 0.3em; border-bottom: 1px solid #eaecef; font-weight: 600; font-size: 18px; line-height: 1.25; } #optionsframework .about-content ul { padding-left: 0; list-style: none; font-size: 15px; } #optionsframework .about-content ul li { line-height: 25px; } #optionsframework .about-content .notices { color: #727777; font-size: 14px; } #optionsframework .about-content .tips { color: #333333; text-align: center; font-size: 16px; } #optionsframework .about-content .tips b { margin-left: 3px; } /* ── 多选复选框组(multicheck)──────────────────────────────── 框架原本没有这个类型的渲染分支,所以也没有配套样式。 不加样式的话,9 个纪念日会挤成一行流水文字,看不出是一个可勾选的清单。 这里做成两列表格状,并把说明文字压到第二行、颜色调淡, 让「名称」是视觉主体、「日期说明」是补充信息。 */ #optionsframework .of-multicheck { margin: 0; padding: 2px 0 0; border: 0; } #optionsframework .of-multicheck-item { display: flex; align-items: flex-start; gap: 8px; padding: 9px 12px; margin: 0 0 2px; border-radius: 4px; cursor: pointer; transition: background-color 0.15s ease; } #optionsframework .of-multicheck-item:hover { background-color: #f3f5f7; } #optionsframework .of-multicheck-item input[type="checkbox"] { margin: 3px 0 0; flex: 0 0 auto; } /* 名称与说明两行文字共用的竖排容器 */ #optionsframework .of-multicheck-text { display: flex; flex-direction: column; flex: 1 1 auto; } #optionsframework .of-multicheck-label { font-size: 14px; color: #23282d; line-height: 1.5; } #optionsframework .of-multicheck-note { font-size: 12px; color: #727777; line-height: 1.5; margin-top: 3px; } /* ══════════════════════════════════════════════════════════════ 3.2.24 设置页布局重排 用户反馈:"主题设置的样式不好看,把标签页按钮放左侧、上下排列, 功能项放在右侧,重新设置好看一点。" 实现:≥960px 时把 nav-tab-wrapper 浮到左侧成一列竖排导航, 内容区(含保存提示条)整体右移;窄屏回退 WP 默认的横向标签, 不在手机后台做特殊布局。切标签的 JS(options-custom.js)不动, 它只认 .nav-tab / .nav-tab-active / .group 这几个类。 ══════════════════════════════════════════════════════════════ */ @media screen and (min-width: 960px) { #optionsframework-wrap { max-width: 1180px; } /* 浮动布局的收尾:否则 wrap 高度塌到标签列或面板较短的那个 */ #optionsframework-wrap::after { display: table; clear: both; content: ""; } /* ── 左侧标签列 ── */ #optionsframework-wrap h2.nav-tab-wrapper { float: left; box-sizing: border-box; width: 190px; margin: 0 20px 20px 0; padding: 8px; border: 1px solid #dcdcde; border-radius: 6px; background: #fff; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); } #optionsframework-wrap .nav-tab-wrapper .nav-tab { float: none; display: block; width: 100%; box-sizing: border-box; margin: 0 0 2px; padding: 9px 12px; border: 0; border-left: 3px solid transparent; border-radius: 4px; background: none; color: #50575e; line-height: 1.5; cursor: pointer; } #optionsframework-wrap .nav-tab-wrapper .nav-tab:last-child { margin-bottom: 0; } #optionsframework-wrap .nav-tab-wrapper .nav-tab:hover { border-left-color: transparent; background: #f0f0f1; color: #1d2327; } #optionsframework-wrap .nav-tab-wrapper .nav-tab-active, #optionsframework-wrap .nav-tab-wrapper .nav-tab-active:hover { border-left-color: #00a2ff; background: #e8f5ff; color: #0089db; font-weight: 600; } /* ── 右侧内容区:面板 + 保存提示条都要让开左侧一列 ── */ #optionsframework-wrap > #optionsframework-metabox, #optionsframework-wrap > .notice, #optionsframework-wrap > .updated, #optionsframework-wrap > .error { margin-left: 210px; } #optionsframework-metabox #optionsframework { border-radius: 6px; } } /* ── 区块内部(宽窄屏都生效)──────────────────────────────── 1. 分组标题:原来 `#optionsframework h3` 是给面板顶部那条用的 灰底横条,选择器太宽把每个分组标题也罩了进去,整页一排灰条。 这里把分组标题单独重排:去灰底、加重字重、压淡下边线。 */ #optionsframework .group > h3 { margin: 0; padding: 15px 18px 13px; border-bottom: 1px solid #f0f0f1; background: none; font-size: 15px; font-weight: 600; color: #1d2327; } /* 2. 区块间距与分隔:原来 10px 的内边距太挤,项与项之间没有分界。 * 3.2.26 调整:16/8 → 14/12,并清掉 h4 标题的 WP 默认 margin(见下) * * 3.2.28:这里补上了 `display: flow-root` —— 本次真正的根因修复。 * * 3.2.24 把标签列改成 float:left(宽 190px;标签多了以后整列约 400px 高), * 而框架原本给 .section 留了 ::after{clear:both} 来清除内部浮动的 * .controls / .explain。问题在于 clear 的作用范围以**最近的 BFC** 为界: * .section 只是普通块盒、不建 BFC,于是它末尾那个清除元素被要求避开 * **左侧整个浮动标签列**,把第一个配置项的下边界一直撑到标签列底部 * (实测 section 高 405px,而内容只占 43px)。 * * 这也解释了 3.2.26 只收编 h4 的 margin 为什么完全无效 —— 多出来的不是 * 间距,是 section 自身的高度;空白也只出现在第一个配置项之后,因为后面 * 的 section 起点已经越过标签列底部,clear 不再起作用。 * * 修法:让 .section 建立自己的 BFC,内部的清除就只在自身范围内生效。 * 不能用 overflow:hidden —— 那会把颜色选择器的弹出层裁掉。 * 原有的 ::after{clear:both}(见上面 .section:after)保留, * 作为极老浏览器不支持 flow-root 时的兜底。 */ #optionsframework .section { display: flow-root; padding: 14px 18px 12px; border-bottom: 1px solid #f6f7f7; } /* 3.2.26:配置项标题(h4.heading)继承 WP 后台 common.css 的 * 上下 margin ≈17px,与 section 的 padding 叠加后,相邻两个配置项 * 之间多出约 34px 的空隙(上下各 17px)。标题的内距统一由本条控制: * 上边距清零(section 的 padding-top 负责),下边距 10px 压住控件。 */ #optionsframework .section > .heading { margin: 0 0 10px; } /* 3. 提交栏:与分组标题同一套留白 */ #optionsframework-submit { padding: 12px 18px; }