前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

设计按钮真的很简单吗? 按钮设计软件

编辑导语:按钮设计是产品设计中的必要模块,合理的按钮设计可以让用户有更清晰的认知,一定程度上提升用户的产品使用体验。本篇文章里,作者便对按钮结构、按钮状态、按钮开发对接技巧等方面做了总结,一起来看一下。

按钮是每个产品设计当中必备的交互元素,可以说是整个Ixd设计当中最为重要的一环。

ESP8266内嵌网页配置WIFI及指令调试

准备
1、智能网络模块(WIFI模块ESP8266-12S/12F)见底图
2、Arduino IDE 最新版 (1.8.13)
目的
1、通过固件访问内置网页可以进行重置WIFI密码 (见底图)
2、通过固件内嵌网页可以进行指令测试(通过网页模拟串口发送指令)

void HandleVal()
{
    handlenum++;
    if(handlenum>1)handlenum=-1;
    if(handlenum==0||handlenum==2)return;
     
    String wifis = server.arg("ssid"); //wifi名称
    String wifip = server.arg("password"); //wifi密码
    String testcmd=server.arg("cmd"); //命令测试
         
    wifis.trim();
    if(wifis!=""&&handlenum==1)
    {      
      Serial.println("Received webServer Config info:");Serial.println(wifis); Serial.println(wifip);
      WiFi.mode(WIFI_STA);
      WiFi.begin(wifis,wifip);//连接成功自动保存
      if((WiFi.status()== WL_CONNECTED))
      {
        strcpy(wifi_ssd,wifis.c_str());//名称复制 wifis       WiFi.SSID().c_str()
        strcpy(wifi_psw,wifip.c_str());//密码复制 wifip        WiFi.psk().c_str()
        rom_save();//保存wifi及模式参数 到EEPROM 断电记忆
        //ESP.reset();//重启
      }
    }
     
    testcmd.trim();//去掉前后空格
    if(testcmd!=""&&handlenum==1)
    {
      Serial.print("Recv Web Commond:");Serial.println(testcmd);
      doAction_local(testcmd);//与串口一致的执行函数(本地,网络,串口等统一到此中执行减少代码量)
      testcmd="";      
    }
}
/*****************************************************
 * 函数名称:handleNotFound()
 * 函数说明:响应失败函数
 * 参数说明:无
******************************************************/
void handleNotFound() {
    digitalWrite(led_PIN, 0);//指示灯LED_BUILTIN
    String message = "File Not Found\n\n";
    message += "URI: ";
    message += server.uri();
    message += "\nMethod: ";
    message += (server.method() == HTTP_GET) ? "GET" : "POST";
    message += "\nArguments: ";
    message += server.args();
    message += "\n";
    for (uint8_t i = 0; i < server.args(); i++) {
      message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
    }
    server.send(404, "text/plain", message);
    led2(500,8);//0.3s-3次循环-余1灭    
}
/*****************************************************
 * 函数名称:htmlConfig() 
 * 函数说明:web配置WiFi函数  (当智能配网失败时调用)
 * 参数说明:无
 * 调用方法 [b]setup[/b]()中进行初始化
******************************************************/
void htmlConfig()
{
    WiFi.mode(WIFI_AP_STA);//设置模式为AP+STA双模式
    digitalWrite(led_PIN, LOW);
    //IPAddress softLocal(192,168,128,1);
    //IPAddress softGateway(192,168,128,1);
    //IPAddress softSubnet(255,255,255,0);
    //WiFi.softAPConfig(softLocal, softGateway, softSubnet);
    String apName = ("9I"+(String)ESP.getChipId());  // 2 设置WIFI名称
    //const char *softAPName = apName.c_str();
    apssid= apName.c_str();
    WiFi.softAP(apssid, appassword);  
    IPAddress myIP = WiFi.softAPIP();
    if (MDNS.begin("esp8266")) {//hostString=esp8266
      Serial.println("web open url:esp8266.local or 192.168.4.1");
    }  
    server.on("/", handleRoot);                   //回调 html,请求
    server.on("/HandleVal", HTTP_GET, HandleVal); //连接
    server.onNotFound(handleNotFound);            //请求失败回调函数  (可选)
    server.begin();//开启服务器
    Serial.println("HTTP server started");
}

零基础学习HTML之html框架内嵌框架和head头信息设置

HTML 框架

框架的作用就是把浏览器窗口划分成多个子窗口。

每个子窗口可以载入各自的HTML文档。

框架(frameset)与页面主体body是同级的关系

1.框架的整体结构

<frameset rows="高度"> ~ </frameset>

<frameset cols="宽度"> ~ </frameset>

<frame src="http://www.haook.cn" name="框架名称">

<< 1 >>
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言