代码之家  ›  专栏  ›  技术社区  ›  feychu

悬停时使标签加粗会使容器移动

  •  1
  • feychu  · 技术社区  · 7 年前

    jfiddle link

    这是我的html代码:

    <form>
      <div>
        <b class="group-label">from</b>
        <span class="input-wrapper">
          <input type="radio" id="from-hiragana" name="from" value="true">
          <label for="from-hiragana">
            <span>Hiragana</span>
          </label>
        </span>
        <span class="input-wrapper">
          <input type="radio" id="from-katakana" name="from" value="true">
          <label for="from-katakana">
            <span>Katakana</span>
          </label>
        </span>
        <span class="input-wrapper">
          <input type="radio" id="from-romaji" name="from" value="true">
          <label for="from-romaji">
            <span>Romaji</span>
          </label>
        </span>
      </div>
    </form>
    

    这是我的css代码:

    .input-wrapper {
      margin-right: 30px;
    }
    
    .input-wrapper label {
      position: relative;
      cursor: pointer;
    }
    
    .input-wrapper label:hover {
      font-weight: bold;
      transition: 0.3s font-weight;
    }
    
    .input-wrapper span::before,
    .input-wrapper span::after {
      content: '';
      position: absolute;
      top: 0;
      bottom: 0;
      margin: auto;
    }
    
    .input-wrapper span::hover {
      cursor: pointer;
    }
    .input-wrapper span::before {
      left: -20px;
      width: 17px;
      height: 17px;
      background-color: white;
      border-radius: 50px;
    }
    
    input[type="radio"] {
      display: none;
    }
    
    input[type="radio"]:checked + label span::after {
      left: -17px;
      width: 11px;
      height: 11px;
      border-radius: 10px;
      background-color: #98fbc9;
      transition: left .25s, background-color .25s;
    }
    
    .group-label {
      margin-right: 30px;
      text-transform:uppercase;
    }
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   feychu    7 年前

    使用文字阴影使文字看起来粗体。看见 jsfiddle

    .input-wrapper label:hover {
      /* font-weight: bold; */
      text-shadow:1px 0px 0px black;
      transition: 0.3s text-shadow;
    }
    
        2
  •  1
  •   Conniption    7 年前

    .input-wrapper {
      margin-right: 100px;
    }
    
    .input-wrapper label {
      position: fixed;
      cursor: pointer;
    }
    
        3
  •  1
  •   LKG    7 年前

    你可以通过使用 text-shadow 像下面这样

    fiddle link

    max-width flex 像下面这样

    CSS更改

    .input-wrapper label:hover {
      /* font-weight: bold; */
      text-shadow:1px 0px 0px #000;
      transition: all 0.3s linear;
    }
    

    .input-wrapper {
      margin-right: 30px;
    }
    
    .input-wrapper label {
      position: relative;
      cursor: pointer;
    }
    
    .input-wrapper label:hover {
      /* font-weight: bold; */
      text-shadow:1px 0px 0px #000;
      transition: all 0.3s linear;
    }
    
    .input-wrapper span::before,
    .input-wrapper span::after {
      content: '';
      position: absolute;
      top: 0;
      bottom: 0;
      margin: auto;
    }
    
    .input-wrapper span::hover {
      cursor: pointer;
    }
    .input-wrapper span::before {
      left: -20px;
      width: 17px;
      height: 17px;
      background-color: white;
      border-radius: 50px;
    }
    
    input[type="radio"] {
      display: none;
    }
    
    input[type="radio"]:checked + label span::after {
      left: -17px;
      width: 11px;
      height: 11px;
      border-radius: 10px;
      background-color: #98fbc9;
      transition: left .25s, background-color .25s;
    }
    
    .group-label {
      margin-right: 30px;
      text-transform:uppercase;
    }
    <form>
      <div>
        <b class="group-label">from</b>
        <span class="input-wrapper">
          <input type="radio" id="from-hiragana" name="from" value="true">
          <label for="from-hiragana">
            <span>Hiragana</span>
        </label>
        </span>
        <span class="input-wrapper">
          <input type="radio" id="from-katakana" name="from" value="true">
          <label for="from-katakana">
            <span>Katakana</span>
        </label>
        </span>
        <span class="input-wrapper">
          <input type="radio" id="from-romaji" name="from" value="true">
          <label for="from-romaji">
            <span>Romaji</span>
        </label>
        </span>
      </div>
    </form>