# 迷你导航笔记--4

# 实现删除

引入icon-close,通过css布局调整位置

const render = ()=>{
  $('.siteList').find('li:not(.last)').remove()
  hashMap.forEach(node =>{
    const $li = $(`<li>
        <a href="${node.url}">
          <div class="site">
            <div class="logo">${node.logo}</div>
            <div class="link">${simplifyUrl(node.url)}</div>
            <div class="close">
              <svg class="icon" aria-hidden="true">
                <use xlink:href="#icon-close"></use>
              </svg>
            </div>
          </div>
        </a>
      </li>`).insertBefore($lastLi)
  })
}
.siteList .site{
  position: relative;
  cursor: pointer;
}
.siteList .site > .close{
  position: absolute;
  right:10px;
  top:5px;
  cursor: default;
}

使用js控制点击事件,代替 a 标签跳转功能, 使用 stopPropagation 阻止冒泡,点击之后重新调用render渲染

const render = ()=>{
  $('.siteList').find('li:not(.last)').remove()
  hashMap.forEach((node,index) =>{
    const $li = $(`<li>
      <div class="site">
        <div class="logo">${node.logo}</div>
        <div class="link">${simplifyUrl(node.url)}</div>
        <div class="close">
          <svg class="icon" aria-hidden="true">
            <use xlink:href="#icon-close"></use>
          </svg>
        </div>
      </div>
    </li>`).insertBefore($lastLi)
    $li.on('click',()=>{
      window.open(node.url)
    })
    $li.on('click','.close',(e)=>{
      e.stopPropagation() //阻止冒泡
      hashMap.splice(index,1)
      render()
    })
  })
}

# PC端搜索框布局

使用媒体查询

@media (min-width:500px){
  .searchForm{
    max-width: 400px;
    margin-left:auto;
    margin-right:auto;
  }
}

# siteList布局

使用 -margin 代替 space-between

.globalMain{
  max-width:900px;
  margin-left:auto;
  margin-right: auto;
}
@media(min-width:500px){
  .globalHeader{
    margin:100px 0 60px;
  }
  .siteList{
    margin-left:0;
    margin-right: -25px;
    justify-content: flex-start;
  }
  .siteList > li {
    margin-right: 25px;
  }
}

# 悬浮出现关闭按钮

默认none,悬浮时变为 block

.siteList .site > .close {
  cursor: default;
}
.siteList .site:hover > .close {
  display: block;
}

# 键盘事件

$(document).on('keypress',(e)=>{
  const {key} = e
  for(let i = 0; i < hashMap.length; i++){
    if(hashMap[i].logo.toLowerCase() === key){
      window.open(hashMap[i].url)    
    }  
   }
})

# parcel报错

Error in parsing SVG: Unbound namespace prefix: "xlink"
// 解决措施: 添加 --no-minify
parcel build src/index.html --no-minify

# 目录路径

parcel build src/index.html --no-minify --public-url ./

yarn init --yes/-y 跳过交互式会话,生成 package.json