星空晶体 发表于 2024-7-30 14:06:47

星空晶体的BBCode预览器正式版1.0版本发布

本帖最后由 星空晶体 于 2024-7-30 14:10 编辑

网站:https://xkjt.github.io/tool/bbcode-see/BBCode-3.html

(换网站了,不是之前的网站)

有什么问题直接在下面回复就行,本人尽力解决!

本版本修复了第二版的若干Bug并修改了标签:

①原来标签只支持以下情况:

https://xxx.xxx/

现在同时支持长宽编辑:

https://xxx.xxx/

②原来标签只支持:


xxxxxx...
xxxxxx...
...


现在支持有参数的表格了:


xxxxxx...
xxxxxx...
...

③标签 code 修复了字体过大的Bug,现在,这四个标签的预览都是与其他字的大小都一样的(也就是相当于 px=16)。

④原来输入框无法滑动现在添加了以下css代码以可以滑动:

overflow-y: auto; /* 当内容超过高度时显示垂直滚动条 */

这就是所有了。

更多Bug正在寻找,欢迎在下面回复。

图片浏览:


源代码(过于史山了,忘排一下了):

<!DCTYPE html>
<html>
    <head>
      <meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
      <title>BBcode预览器</title>
      <style>
      body{
      margin: 0;
      padding: 0;
      font-size: 12px;
      font-family: 'Microsoft YaHei', sans-serif;
      }
      
      #qianyan {
      border: 2px solid orange;
      margin-top: 20px;
      border-radius: 10px;
      background-color: rgba(255, 255, 255, 0);
      }
      #qianyan .biaoti {
      text-align: center;
      color: #87ceeb;
      }
      #qianyan .wen {
      
      color: #00008B
      }
      #zhengshi {
      color: black;
      background-color: white;
      overflow: auto;
      border: 2px solid orange;
      margin-top: 20px;
      border-radius: 10px;
      background-color: rgba(255, 255, 255, 0);
      
}

      #yulan {
      margin-left: 20px;
      width: calc(100% - 40px);
      height: 270px;
      overflow: auto;
      border: 2px solid #00008B;
      border-radius: 10px;
      background-color: rgba(255, 255, 255, 0);
      overflow-y: auto;
      word-wrap: break-word;
      white-space: pre-wrap;
      overflow: ;
}

      #zhengshi .biaoti {
      text-align: center;
      color: #87ceeb;
      }
      #zhengshi .anniu {
      width: 200px;
      height: 50px;
      padding: 10px;
      
      border: 1px solid #00008B;
      border-radius: 25px;
      background-color: rgba(255, 255, 255, 0);;
      margin-left: 80px;
      margin-top: 20px;      
      
      }
       #zhengshi .biaoti1 {
      text-align: center;
      color: #87ceeb
       }
       table {
         width: 100%;
         border-collapse: collapse;
         color: black;
         font-size: 16p
}

       tr, td {
         border: 1px solid black;
}
       ol, ul {
margin: 0;
padding: 0;
list-style-position: inside;
}

li {
margin: 0;
padding: 0;
line-height: 1.5;
vertical-align: middle;}

   #output {
    background-color: rgba(255, 255, 255, 0); /* 半透明背景 */
    border: 1px solid #00008B; /* 边框 */
    margin-top: 10px;
    padding: 10px;
    border-radius: 10px;
    width: 94%;
    height: 400px;
    overflow-y: auto;
    word-wrap: break-word;
    white-space: pre-wrap;
}

#output1 {
    font-size: 16px;
    margin: 0;
    white-space: pre-wrap;
    }

    </style>
      <script>
      function jiexi() {
var shuchu = document.getElementById("yulan").value;
yulan = shuchu
    .replace(/\]+)\](.*?)\[\/color\]/gi, function(match, color, content) {
      return '<span style="color: ' + color + '">' + content + '</span>';
    })
    .replace(/\]+)\](.*?)\[\/backcolor\]/gi, function(match, backcolor, content) {
      return '<span style="background-color: ' + backcolor + '">' + content + '</span>';
    })
    .replace(/\(.*?)\[\/size\]/gi, function(match, size, content) {
      var fontSize;
      switch (size) {
      case '1':
          fontSize = '8px';
          break;
      case '2':
          fontSize = '12px';
          break;
      case '3':
          fontSize = '16px';
          break;
      case '4':
          fontSize = '20px';
          break;
      case '5':
          fontSize = '24px';
          break;
      case '6':
          fontSize = '28px';
          break;
      case '7':
          fontSize = '32px';
          break;
      case '8':
          fontSize = '36px';
          break;
      default:
          fontSize = '16px';
          break;
      }
      return '<span style="font-size: ' + fontSize + '">' + content + '</span>';
    })
    .replace(/\]+)\](.*?)\[\/url\]/gi, function(match, url, content) {
      return '<a href="' + url + '" target="_blank">' + content + '</a>';
    })
    .replace(/\(.*?)\[\/url\]/gi, function(match, url) {
      return '<a href="' + url + '" target="_blank">' + url + '</a>';
    })
    .replace(/\/g, "<strong>")
    .replace(/\[\/b\]/g, "</strong>")
    .replace(/\/g, "<s>")
    .replace(/\[\/s\]/g, "</s>")
    .replace(/\/g, "<u>")
    .replace(/\[\/u\]/g, "</u>")
    .replace(/\/g, "<i>")
    .replace(/\[\/i\]/g, "</i>")
    .replace(/\(.*?)\[\/quote\]/gs, function(match, quoteContent) {
      return '<div style="border: 1px dashed orange; padding: 10px; margin: 10px 0; background-color: #ffe0a3; color: #d97008;">' + '回复 '+ quoteContent + '</div>';
    })
.replace(/\]+))?\](.*?)\[\/table\]/gs, function(match, params, tableContent) {
      var tableStyle = '';
      if (params) {
          var widthMatch = params.match(/(\d+)(%|px)?/);
          var colorMatch = params.match(/([#a-zA-Z0-9]+)(?:,|$)/);
          if (widthMatch) {
            tableStyle += 'width: ' + widthMatch + (widthMatch || 'px') + ';';
          }
          if (colorMatch) {
            tableStyle += 'background-color: ' + colorMatch + ';';
          }
      }
      return '<table style="' + tableStyle + '">' + tableContent + '</table>';
      })
    .replace(/\/g, "<tr>")
    .replace(/\[\/tr\]/g, "</tr>")
    .replace(/\/g, "<td>")
    .replace(/\[\/td\]/g, "</td>")
    .replace(/\(.*?)\[\/code\]/gs, function(match, codeCode) {
      return '<div style="border: 1px solid lightblue; padding: 0; margin: 10px 0;">' +
      '<div style="background-color: yellow; color: white; text-align: center; padding: 5px;">代码内容</div>' +
      '<div style="background-color: #F5F5F5 ; padding: 10px;">' + codeCode + '</div>' +
      '</div>';
})
    .replace(/\(.*?)\[\/spoiler\]/gs, function(match, spoilerContent) {
      return '<div style="border: 1px solid #00008B; padding: 0; margin: 10px 0;">' +
      '<div style="background-color: blue; color: white; text-align: center; padding: 5px;">折叠内容</div>' +
      '<div style="background-color: white; color: black; padding: 10px;">' + spoilerContent + '</div>' +
      '</div>';
})
    .replace(/\(.*?)\[\/hide\]/gs, function(match, points, hiddenContent) {
      return '<div style="border: 1px solid #00008B; padding: 0; margin: 10px 0;">' +
      '<div style="background-color: red; color: white; text-align: center; padding: 5px;">积分>' + points + '才能查看,否则需要回复!</div>' +
      '<div style="background-color: white; color: black; padding: 10px;">' + hiddenContent + '</div>' +
      '</div>';
})

    .replace(/\(.*?)\[\/align\]/gi, function(match, align, content) {
      return '<div style="text-align: ' + align + '">' + content + '</div>';
    })
    .replace(/\(.*?)\[\/list\]/gs, function(match, listContent) {
      return '<ol>' + listContent.replace(/\[\*\](.*?)\n?/g, '<li>$1</li>') + '</ol>';
    })
    .replace(/\(.*?)\[\/list\]/gs, function(match, listContent) {
      return '<ul>' + listContent.replace(/\[\*\](.*?)\n?/g, '<li>$1</li>') + '</ul>';
    })
    .replace(/\+),(+)\](.*?)\[\/img\]/gi, function(match, width, height, url) {
      return '<img src="' + url + '" style="width: ' + width + 'px; height: ' + height + 'px;">';
    })
    .replace(/\(.*?)\[\/img\]/g, "<img src=\"$1\" style=\"max-width: 100%; height: auto;\">")
    .replace(/\[\hr\]/g, "<hr>");
document.getElementById("output1").innerHTML = yulan;
}



    </script>
    </head>
    <body>
      <div id="qianyan">
            <h1 class="biaoti">在 使 用 之 前</h1>
            <p class="wen"><strong>BBcode</strong>是一种简单、易学的<strong>标记语言。</strong>主要用于论坛、在线社区和公告板等平台的文本格式化。它基于HTML,但相比之下更为简单,易于学习和使用。BBcode通过使用特殊的标签来对文本进行格式化,这些标签在显示时会转换为HTML代码,从而实现在网页上的格式化效果。BBcode的语法类似于Html,但是是[]不是&lt;&gt;。此工具可快速预览BBcode代码,让用户可查看排版并修复不足的排版。</p>
      </div>
      <div id="zhengshi">
            <h1 class="biaoti">开 始 使 用</h1> <br> <textarea id="yulan" placeholder="请在这里输入你的BBcode代码"></textarea> <button class="anniu">点击预览</button> <br>
            <h1 class="biaoti1">↓下面预览↓</h1>
            <div id="output">
                <pre id="output1"></pre>
            </div>
      </div> <br>
      
    </body>
</html>

支持一下吧[贴吧_滑稽][贴吧_爱心]

Sakarwei 发表于 2024-7-30 14:58:21

本帖最后由 Sakarwei 于 2024-7-30 15:00 编辑

我来找茬了:我的代码呢[哔哩_滑稽]

(JS没有执行成功大好评!)
页: [1]
查看完整版本: 星空晶体的BBCode预览器正式版1.0版本发布