FullCalendar:eventColor,eventBackgroundColor, eventBorderColor, and eventTextColor

article/2025/10/15 9:27:35
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title>背景色設定</title>
<link href='../fullcalendar.min.css' rel='stylesheet' />
<link href='../fullcalendar.print.min.css' rel='stylesheet' media='print' />
<script src='../lib/moment.min.js'></script>
<script src='../lib/jquery.min.js'></script>
<script src='../fullcalendar.min.js'></script>
<script>
// ver 3.1.2 當前最新版本,塗聚文Geovin Du 註
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listMonth'
},
defaultDate: '2017-04-12',
navLinks: true, // can click day/week names to navigate views
//businessHours: true, // display business hours 默認設置工作時間和日期
businessHours:{    // days of week. an array of zero-based day of week integers (0=Sunday)   true  
dow: [ 1, 2, 3, 4, 5 ], // Monday - Fri    
start: '09:00', // a start time (09am in this example)    
end: '18:00', // an end time (6pm in this example)
overlap: false,
rendering: 'background', //自定背景色
color: '#ffffe0'
},
editable: true,
events: [
{
title: 'Business Lunch',
start: '2017-04-03T13:00:00',
constraint: 'businessHours'
},
{
title: 'Meeting',
start: '2017-04-13T11:00:00',
constraint: 'availableForMeeting', // defined below
},
{
title: 'Conference',
start: '2017-04-18',
end: '2017-04-20'
},
{
title: 'Party',
start: '2017-04-29T20:00:00'
},
// areas where "Meeting" must be dropped
{
id: 'availableForMeeting',
title: 'availableForMeeting',
start: '2017-04-11T10:00:00',
end: '2017-04-11T16:00:00',
//rendering: 'border-color', //自定指定時間段的樣式					
//color: '#ff9f89'
//或
//backgroundColor:'#cccccc',
//textColor:'#ff9f89',
//borderColor:'#9999f89'
},
{
id: 'availableForMeeting',
start: '2017-04-13T10:00:00',
end: '2017-04-13T16:00:00',			
//rendering: 'background-color', //自定指定時間段的樣式
//color: '#ff9f89'
},
// red areas where no events can be dropped
{
start: '2017-04-24',
end: '2017-04-28',
overlap: false,
},
{
start: '2017-04-06',
end: '2017-04-08',
overlap: false,
}
],
//eventColor: '#378006', //
eventTextColor: 'black',
eventBorderColor:'red',
eventBackgroundColor:'green'
});
});
</script>
<style type="text/css">
body {
margin: 40px 10px;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
#calendar {
max-width: 900px;
margin: 0 auto;
}
</style>
</head>
<body>
<div id='calendar'></div>
</body>
</html>

  https://fullcalendar.io/docs1/event_data/Event_Source_Object/

color,background-color,border-color

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="fullCalendarTimepicker.aspx.cs" Inherits="fullcalendardemo.fullCalendarTimepicker" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>ASP.NET FullCalendar</title>
<link href="ajax/libs/jqueryui/1.12.1/themes/cupertino/jquery-ui.min.css" rel="stylesheet" />
<link href="ajax/libs/fullcalendar/3.1.1/fullcalendar.min.css" rel="stylesheet" />
<link href="ajax/libs/qtip2/3.0.3/jquery.qtip.min.css" rel="stylesheet" />   
<link rel="stylesheet" media="all" type="text/css" href="ajax/libs/timepicker/jquery-ui-timepicker-addon.css" /> 
<link rel="stylesheet" href="ajax/libs/formValidator/css/validationEngine.jquery.css" type="text/css"  media="screen" charset="utf-8" />
<style type='text/css'>
body
{
margin-top: 40px;
text-align: center;
font-size: 14px;
font-family: "Lucida Grande" ,Helvetica,Arial,Verdana,sans-serif;
}
#calendar
{
width: 900px;
margin: 0 auto;
}
/* css for timepicker */
.ui-timepicker-div dl
{
text-align: left;
}
.ui-timepicker-div dl dt
{
height: 25px;
}
.ui-timepicker-div dl dd
{
margin: -25px 0 10px 65px;
}
.style1
{
width: 100%;
}
/* table fields alignment*/
.alignRight
{
text-align:right;
padding-right:10px;
padding-bottom:10px;
}
.alignLeft
{
text-align:left;
padding-bottom:10px;
}
</style>
</head>
<body>
<form id="form1" runat="server">  
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">  
</asp:ScriptManager>  
<div id="calendar">  
</div>  
<div id="updatedialog" style="font: 70% 'Trebuchet MS', sans-serif; margin: 50px;display: none;" title="Update or Delete Event">  
<table class="style1">  
<tr>  
<td class="alignRight">  
標題:</td>  
<td class="alignLeft">  
<input id="eventName" type="text" size="33" /><br /></td>  
</tr>  
<tr>  
<td class="alignRight">  
描述:</td>  
<td class="alignLeft">  
<textarea id="eventDesc" cols="30" rows="3" ></textarea></td>  
</tr>  
<tr>  
<td class="alignRight">  
事件類型:</td>  
<td class="alignLeft">                 
<select id="editTypeid" name="editTypeid">
<option value="1">公务</option>
<option value="2">私务</option>
</select>
</td>  
</tr> 
<tr>  
<td class="alignRight">  
是否全天:</td>  
<td class="alignLeft"> 
<input id="editday" type="checkbox"  name="eidtday"/>
</td>  
</tr> 
<tr>  
<td class="alignRight">  
開始時間:</td>  
<td class="alignLeft">  
<input id="eventStart"  name="eventStart" class="validate[required,funcCall[validate12time]]" value="" /></td>  
</tr>  
<tr>  
<td class="alignRight">  
結束時間: </td>  
<td class="alignLeft">  
<input id="eventEnd" name="eventEnd" class="validate[required,funcCall[validate12time]]" value=""/><input type="hidden" id="eventId" /></td>  
</tr>  
</table>  
</div>  
<div id="addDialog" style="font: 70% 'Trebuchet MS', sans-serif; margin: 50px;" title="Add Event">  
<table class="style1">  
<tr>  
<td class="alignRight">  
標題:</td>  
<td class="alignLeft">  
<input id="addEventName" type="text" size="33" /><br /></td>  
</tr>  
<tr>  
<td class="alignRight">  
描述:</td>  
<td class="alignLeft">  
<textarea id="addEventDesc" cols="30" rows="3" ></textarea></td>  
</tr>
<tr>  
<td class="alignRight">  
事件類型:</td>  
<td class="alignLeft">  
<select id="addTypeid" name="addTypeid">
<option value="1">公务</option>
<option value="2">私务</option>
</select>
</td>  
</tr>
<tr>  
<td class="alignRight">  
是否全天:</td>  
<td class="alignLeft"> 
<input id="addallday" type="checkbox" name="addallday"/> 
</td>  
</tr>           
<tr>  
<td class="alignRight">  
開始時間:</td>  
<td class="alignLeft">  
<input id="addEventStartDate" class="validate[required,funcCall[validate2time]]" name="addEventStartDate" value=""/></td>  
</tr>  
<tr>  
<td class="alignRight">  
結束時間:</td>  
<td class="alignLeft">  
<input id="addEventEndDate" class="validate[required,funcCall[validate2time]]" name="addEventEndDate" value=""/></td>  
</tr>  
</table>  
</div>  
<div runat="server" id="jsonDiv" />  
<input type="hidden" id="hdClient" runat="server" />  
</form>  
<script src="ajax/libs/moment.js/2.18.1/moment.min.js" type="text/javascript"></script>  
<script src="ajax/libs/jquery/3.1.1/jquery.min.js" type="text/javascript"></script>  
<script src="ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" type="text/javascript"></script>  
<script src="ajax/libs/qtip2/3.0.3/jquery.qtip.min.js" type="text/javascript"></script>  
<script type="text/javascript" src="ajax/libs/timepicker/jquery-ui-timepicker-addon.js"></script>  
<script type="text/javascript" src="ajax/libs/timepicker/i18n/jquery-ui-timepicker-addon-i18n.min.js"></script>  
<script type="text/javascript" src="ajax/libs/timepicker/i18n/jquery-ui-timepicker-zh-CN.js"></script>  
<script type="text/javascript" src="ajax/libs/timepicker/jquery-ui-sliderAccess.js"></script>  
<script src="ajax/libs/fullcalendar/3.1.1/fullcalendar.min.js" type="text/javascript"></script>  
<script src='ajax/libs/fullcalendar/3.1.1/locale-all.js' type="text/javascript"></script>  
<script src="ajax/libs/formValidator/js/jquery.validationEngine.js" type="text/javascript"></script>  
<script src="ajax/libs/formValidator/js/languages/jquery.validationEngine-zh_CN.js" type="text/javascript"></script>    
<script src="ajax/libs/jqueryui/1.12.1/ui/i18n/datepicker-zh-CN.js" type="text/javascript"></script>  
<script src="scripts/calendarscriptTime.js" type="text/javascript"></script>  
</body>  
</html>  

  calendarscriptTime.js

var currentUpdateEvent;
var addStartDate;
var addEndDate;
var globalAllDay;
var addtypeid;
var addallday;
var dt;
//修改時,穫取值
// 涂聚文 Geovin Du edit 20170417
//增加是否全天,事件類型
function updateEvent(event, element) {
//alert(event.description);
if ($(this).data("qtip")) $(this).qtip("destroy");
currentUpdateEvent = event;
dt= new Date()
$('#updatedialog').dialog('open');
$("#eventName").val(event.title);
$("#eventDesc").val(event.description);
$("#eventId").val(event.id);
$("#eventStart").val(""   $.fullCalendar.formatDate(event.start, "YYYY-MM-DD HH:mm")); //text $.fullCalendar.formatDate(event.start, "YYYY-MM-DD HH:mm")
$("#eventStart").datetimepicker({ timeInput: true, changeMonth: true, changeYear: true, dateFormat: 'yy-mm-dd', timeFormat: 'HH:mm', hourMin: 5, hourMax: 24, hourGrid: 3, minuteGrid: 15 }); //timeInput: true,
//$("#eventStart").datetimepicker('setDate', (new Date()));
$("#editTypeid").val(event.typeid);    
if (event.end === null) {
$("#eventEnd").val(""   $.fullCalendar.formatDate(dt, "YYYY-MM-DD HH:mm")); //text
}
else {
$("#eventEnd").val(""   $.fullCalendar.formatDate(event.end, "YYYY-MM-DD HH:mm")); //text  event.end.toLocaleString()
$("#eventEnd").datetimepicker({ timeInput: true, changeMonth: true, changeYear: true, dateFormat: 'yy-mm-dd', timeFormat: 'HH:mm', hourMin: 5, hourMax: 24, hourGrid: 3, minuteGrid: 15 }); //
}
$("#editday").prop("checked", event.allDay); //
return false;
}
function updateSuccess(updateResult) {
//alert(updateResult);
}
function deleteSuccess(deleteResult) {
//alert(deleteResult);
}
function addSuccess(addResult) {
// if addresult is -1, means event was not added
//    alert("added key: "   addResult);
if (addResult != -1) {
$('#calendar').fullCalendar('renderEvent',
{
title: $("#addEventName").val(),
start: addStartDate,
end: addEndDate,
id: addResult,
description: $("#addEventDesc").val(),
allDay: $("#addallday").prop('checked'), //  globalAllDay,
typeid: $("#addTypeid").val() //addtypeid
},
true // make the event "stick"
);
$('#calendar').fullCalendar('unselect');
}
}
function UpdateTimeSuccess(updateResult) {
//alert(updateResult);
}
//
$("#addEventStartDate").datetimepicker({
timeInput: true,
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
timeFormat: 'HH:mm', hourMin: 5, hourMax: 24, hourGrid: 3, minuteGrid: 15
});
//
$("#addEventEndDate").datetimepicker({
timeInput: true,
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
timeFormat: 'HH:mm', hourMin: 5, hourMax: 24, hourGrid: 3, minuteGrid: 15
});
//選擇時,穫取值
function selectDate(start, end, allDay, typeid) {
//$('#addEventStartDate').datetimepicker();
$('#addDialog').dialog('open');
$("#addEventStartDate").val(""   $.fullCalendar.formatDate(start, "YYYY-MM-DD HH:mm")); //text //標簽span $.fullCalendar.formatDate(start, "yyyy/MM/dd HH:mm");
$("#addEventEndDate").val(""   $.fullCalendar.formatDate(end, "YYYY-MM-DD HH:mm")); //text $.fullCalendar.formatDate(end, "yyyy/MM/dd HH:mm");
//$("#addEventStartDate").datetimepicker('setDate', $.fullCalendar.formatDate(start, "YYYY-MM-DD HH:mm")); //設置值,日期格式還存在不相符問題
addStartDate = start;
addEndDate = end;
globalAllDay = allDay;
addtypeid = typeid;
//alert(allDay);
}
function updateEventOnDropResize(event, allDay) {
//alert("allday: "   allDay);
var eventToUpdate = {
id: event.id,
start: event.start
};
if (event.end === null) {
eventToUpdate.end = eventToUpdate.start;
}
else {
eventToUpdate.end = event.end;
}
var endDate;
if (!event.allDay) {
endDate = new Date(eventToUpdate.end   60 * 60000);
endDate = endDate.toJSON();
}
else {
endDate = eventToUpdate.end.toJSON();
}
eventToUpdate.start = eventToUpdate.start.toJSON();
eventToUpdate.end = eventToUpdate.end.toJSON(); //endDate;
eventToUpdate.allDay = event.allDay;
PageMethods.UpdateEventTime(eventToUpdate, UpdateTimeSuccess);
}
function eventDropped(event, dayDelta, minuteDelta, allDay, revertFunc) {
if ($(this).data("qtip")) $(this).qtip("destroy");
updateEventOnDropResize(event);
}
function eventResized(event, dayDelta, minuteDelta, revertFunc) {
if ($(this).data("qtip")) $(this).qtip("destroy");
updateEventOnDropResize(event);
}
//隻可輸入數字,字母,中文,中文標點符號 20170417 塗聚文 EDIT
function checkForSpecialChars(stringToCheck) {
var pattern = /[^A-Za-z0-9 |\u4e00-\u9fa5|\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/;  //A-Za-z0-9
return pattern.test(stringToCheck);
}
//判斷是否整天時間(根据開始時間和結束時間)
function isAllDay(startDate, endDate) {
var allDay;
//startDate.format("HH:mm:ss") == "00:00:00" && endDate.format("HH:mm:ss") == "00:00:00"
if (getDiffIntHour(startDate, endDate)) 
{
allDay = true;
globalAllDay = true;
}
else {
allDay = false;
globalAllDay = false;
}
return allDay;
}
//大于二十四小時為大于1天
function getDiffIntHour(startDate, endDate) {
var allDay;
var diffMs = Math.abs(endDate - startDate);
var diffDays = Math.round(diffMs / 86400000); // days
var diffHrs = Math.round((diffMs % 86400000) / 3600000); // hours
var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes
var diff = endDate - startDate;
var diffSeconds = diff / 1000;
var HH = Math.floor(diffSeconds / 3600);
var MM = Math.floor(diffSeconds % 3600) / 60;
if (HH > 24) {
allDay = true;
globalAllDay = true;
}
else {
allDay = false;
globalAllDay = false;
}
return allDay;
}
///
function getDiffTime(startDate, endDate) {
var allDay;
var diffMs = Math.abs(endDate - startDate);
var diffDays = Math.floor(diffMs / 86400000); // days
var diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours
var diffMins = Math.floor(((diffMs % 86400000) % 3600000) / 60000); // minutes
if (diffHrs > 24) {
allDay = true;
globalAllDay = true;
}
else {
allDay = false;
globalAllDay = false;
}
return allDay;
}
///
function GetDateDiff(startTime, endTime, diffType) {
//将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式 
startTime = startTime.replace(/\-/g, "/");
endTime = endTime.replace(/\-/g, "/");
//将计算间隔类性字符转换为小写
diffType = diffType.toLowerCase();
var sTime = new Date(startTime); //开始时间
var eTime = new Date(endTime); //结束时间
//作为除数的数字
var timeType = 1;
switch (diffType) {
case "second":
timeType = 1000;
break;
case "minute":
timeType = 1000 * 60;
break;
case "hour":
timeType = 1000 * 3600;
break;
case "day":
timeType = 1000 * 3600 * 24;
break;
default:
break;
}
return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(timeType));
}
//提示內容
function qTipText(start, end, description) {
var text;
if (end !== null)
text = "<strong>开始:</strong> "   start.format("YYYY-MM-DD hh:mm T")   "<br/><strong>结束:</strong> "   end.format("YYYY-MM-DD hh:mm T")   "<br/><br/>"   description;
else
text = "<strong>开始:</strong> "   start.format("YYYY-MM-DD hh:mm T")   "<br/><strong>结束:</strong><br/><br/>"   description;
return text;
}
$(document).ready(function () {
// update Dialog 修改,刪除
$('#updatedialog').dialog({
autoOpen: false,
width: 470,
buttons: {
"update": function () {
//alert(currentUpdateEvent.title);
//var stest = $("#editday").prop('checked'); //
//alert(stest);
var eventToUpdate = {
id: currentUpdateEvent.id,
title: $("#eventName").val(),
description: $("#eventDesc").val(),
allDay: $("#editday").prop('checked'),
typeid: $("#editTypeid").val()
};
if (checkForSpecialChars(eventToUpdate.title) || checkForSpecialChars(eventToUpdate.description)) {
alert("please enter characters: 可輸入數字,字母,中文,中文標點符號, 空格");
}
else {
PageMethods.UpdateEvent(eventToUpdate, updateSuccess);
$(this).dialog("close");
currentUpdateEvent.title = $("#eventName").val();
currentUpdateEvent.description = $("#eventDesc").val();
$('#calendar').fullCalendar('updateEvent', currentUpdateEvent);
$('#calendar').fullCalendar('refresh');//
}
},
"delete": function () {
if (confirm("do you really want to delete this event?")) {
PageMethods.deleteEvent($("#eventId").val(), deleteSuccess);
$(this).dialog("close");
$('#calendar').fullCalendar('removeEvents', $("#eventId").val());
}
}
}
});
//add dialog 添加
$('#addDialog').dialog({
autoOpen: false,
width: 470,
buttons: {
"Add": function () {
//alert("sent:"   addStartDate.format("dd-MM-yyyy hh:mm:ss tt")   "=="   addStartDate.toLocaleString());
//alert($("#addallday").is('checked'));
var eventToAdd = {
title: $("#addEventName").val(),
description: $("#addEventDesc").val(),
typeid: $("#addTypeid").val(),
start: addStartDate.toJSON(), //addStartDate.toJSON()
end: addEndDate.toJSON(),
allDay: $("#addallday").prop('checked')//isAllDay(addStartDate, addEndDate)  //$('input[name=foo]').is(':checked')
};
if (checkForSpecialChars(eventToAdd.title) || checkForSpecialChars(eventToAdd.description)) {
alert("please enter characters: 可輸入數字,字母,中文,中文標點符號, 空格");
}
else {
//alert("sending "   eventToAdd.title);
PageMethods.addEvent(eventToAdd, addSuccess);
$(this).dialog("close");
}
}
}
});
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var options = {
weekday: "long", year: "numeric", month: "short",
day: "numeric", hour: "2-digit", minute: "2-digit"
};
$('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today customBtn',
center: 'title',
right: 'month,agendaWeek,agendaDay,listWeek' //顯示日程列表
},
customButtons: {
customBtn: {
text: 'Custom Button',
click: function () {
alert('This custom button is hot! ?\nNow go have fun!');
}
}
},
defaultView: 'agendaWeek',
eventClick: updateEvent,
selectable: true,
selectHelper: true,
businessHours: {    // days of week. an array of zero-based day of week integers (0=Sunday)   true  
dow: [1, 2, 3, 4, 5], // Monday - Thursday    
start: '09:00', // a start time (09am in this example)    
end: '18:00', // an end time (6pm in this example)
overlap: false,
rendering: 'background', //自定背景色
color: '#ffffe0'
},
select: selectDate,
editable: true,
navLinks: true, // can click day/week names to navigate views
weekNumbers: true, //顯示第几周
//weekNumbersWithinDays: true,
weekNumberCalculation: 'zh-cn',
locale: 'zh-cn',
events: "JsonResponse.ashx",
eventDrop: eventDropped, //可以拖動
eventResize: eventResized, //可以改變大小
eventRender: function (event, element) {
//alert(event.title);
element.qtip({
content: {
text: qTipText(event.start, event.end, event.description), //提示顯示的內容
title: '<strong>'   event.title   ','   event.typeid   '</strong>'
},
position: {
my: 'bottom left',
at: 'top right'
},
style: { classes: 'qtip-shadow qtip-rounded' }
});
}
});
});
function validate12time() {
//alert("debug");
var start = $("#eventStart").val();
var end = $("#eventEnd").val();
var cresult = 0;
if (new Date(start) < new Date(end)) {
cresult = 0;
}
else {
cresult = 1;
}
//     alert(cresult);
if (cresult == 0) {
return false;
} else if (cresult == 1) {
$.validationEngine.closePrompt("#eventStart");
return true;
}
}
function validate2time() {
//alert("debug");
var start = $("#addEventStartDate").val();
var end = $("#addEventEndDate").val();
var cresult = 0;
if (new Date(start) < new Date(end)) {
cresult = 0;
}
else {
cresult = 1;
}
//     alert(cresult);
if (cresult == 0) {
return false;
} else if (cresult == 1) {
$.validationEngine.closePrompt("#addEventStartDate");
return true;
}
}

  

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="typedemo.aspx.cs" Inherits="fullcalendardemo.typedemo" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>ASP.NET FullCalendar--jQuery MiniColors</title>
<link href="ajax/libs/jqueryui/1.12.1/themes/cupertino/jquery-ui.min.css" rel="stylesheet" />
<link rel="stylesheet" href="ajax/libs/bootstrap/3.3.1/css/bootstrap.min.css"/>
<link rel="stylesheet" href="ajax/libs/minicolors/jquery.minicolors.css"/>      
<script src="ajax/libs/jquery/3.1.1/jquery.min.js" type="text/javascript"></script>  
<script src="ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" type="text/javascript"></script> 
<!-- Bootstrap 3 -->    
<script src="ajax/libs/bootstrap/3.3.1/js/bootstrap.min.js" type="text/javascript"></script>
<!-- MiniColors -->
<script src="ajax/libs/minicolors/jquery.minicolors.js" type="text/javascript"></script>
<style type="text/css">
dl {
margin: 20px 0;
}
dt {
font-size: 120%;
}
dd {
padding: 10px 20px 20px 20px;
}
dd:last-child {
border-bottom: none;
}
code {
color: black;
border: none;
background: rgba(128, 128, 128, .1);
}
pre {
background: #f8f8f8;
border: none;
color: #333;
padding: 20px;
}
h2 {
margin-top: 50px;
}
h3 {
color: #aaa;
}
.jumbotron {
padding: 40px;
}
.jumbotron h1 {
margin-top: 0;
}
.jumbotron p:last-child {
margin-bottom: 0;
}
</style>
<script type="text/javascript">
$(document).ready(function () {
$('.demo').each(function () {
//
// Dear reader, it's actually very easy to initialize MiniColors. For example:
//
//  $(selector).minicolors();
//
// The way I've done it below is just for the demo, so don't get confused
// by it. Also, data- attributes aren't supported at this time...they're
// only used for this demo.
//
$(this).minicolors({
control: $(this).attr('data-control') || 'hue',
defaultValue: $(this).attr('data-defaultValue') || '',
format: $(this).attr('data-format') || 'hex',
keywords: $(this).attr('data-keywords') || '',
inline: $(this).attr('data-inline') === 'true',
letterCase: $(this).attr('data-letterCase') || 'lowercase',
opacity: $(this).attr('data-opacity'),
position: $(this).attr('data-position') || 'bottom left',
swatches: $(this).attr('data-swatches') ? $(this).attr('data-swatches').split('|') : [],
change: function (value, opacity) {
if (!value) return;
if (opacity) value  = ', '   opacity;
if (typeof console === 'object') {
console.log(value);
}
},
theme: 'bootstrap'
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<!-- Control types -->
<h3>Control Types</h3>
<div class="well">
<div class="row">
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="hue-demo">Hue (default)</label>
<input type="text" id="hue-demo" class="form-control demo" data-control="hue" value="#ff6161">
</div>
<div class="form-group">
<label for="saturation-demo">Saturation</label>
<input type="text" id="saturation-demo" class="form-control demo" data-control="saturation" value="#0088cc">
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="brightness-demo">Brightness</label>
<input type="text" id="brightness-demo" class="form-control demo" data-control="brightness" value="#00ffff">
</div>
<div class="form-group">
<label for="wheel-demo">Wheel</label>
<input type="text" id="wheel-demo" class="form-control demo" data-control="wheel" value="#ff99ee">
</div>
</div>
</div>
</div>
<!-- Input modes -->
<h3>Input Modes</h3>
<div class="well">
<div class="row">
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="text-field">Text field</label>
<br>
<input type="text" id="text-field" class="form-control demo" value="#70c24a">
</div>
<div class="form-group">
<label for="hidden-input">Hidden Input</label>
<br>
<input type="hidden" id="hidden-input" class="demo" value="#db913d">
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="inline">Inline</label>
<br>
<input type="text" id="inline" class="form-control demo" data-inline="true" value="#4fc8db">
</div>
</div>
</div>
</div>
<!-- Positions -->
<h3>Positions</h3>
<div class="well">
<p>
Valid positions include <code>bottom left</code>, <code>bottom right</code>, <code>top
left</code>, and <code>top right</code>.
</p>
<div class="row">
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="position-bottom-left">bottom left (default)</label>
<input type="text" id="position-bottom-left" class="form-control demo" data-position="bottom left" value="#0088cc">
</div>
<div class="form-group">
<label for="position-top-left">top left</label>
<input type="text" id="position-top-left" class="form-control demo" data-position="top left" value="#0088cc">
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="position-bottom-right">bottom right</label>
<input type="text" id="position-bottom-right" class="form-control demo" data-position="bottom right" value="#0088cc">
</div>
<div class="form-group">
<label for="position-top-right">top right</label>
<input type="text" id="position-top-right" class="form-control demo" data-position="top right" value="#0088cc">
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
</div>
</div>
</div>
<!-- RGB(A) -->
<h3>RGB(A)</h3>
<div class="well">
<div class="row">
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="rgb">RGB</label>
<br>
<input type="text" id="rgb" class="form-control demo" data-format="rgb" value="rgb(33, 147, 58)">
<span class="help-block">
RGB input can be assigned by setting the <code>format</code> option
to <code>rgb</code>.
</span>
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="rgba">RGBA</label>
<br>
<input type="text" id="rgba" class="form-control demo" data-format="rgb" data-opacity=".5" value="rgba(52, 64, 158, 0.5)">
<span class="help-block">
RGBA input can be assigned by setting the <code>format</code>
option to <code>rgb</code> and <code>opacity</code> option to
<code>true</code>.
</span>
</div>
</div>
</div>
</div>
<!-- and more -->
<h3>…and more!</h3>
<div class="well">
<div class="row">
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="opacity">Opacity</label>
<br>
<input type="text" id="opacity" class="form-control demo" data-opacity=".5" value="#766fa8">
<span class="help-block">
Opacity can be assigned by including the <code>data-opacity</code>
attribute or by setting the <code>opacity</code> option to
<code>true</code>.
</span>
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="keywords">Keywords</label>
<br>
<input type="text" id="keywords" class="form-control demo" data-keywords="transparent, initial, inherit" value="transparent">
<span class="help-block">
CSS-wide keywords can be assigned by setting the <code>keywords</code>
option to a comma-separated list of valid keywords: <code>transparent,
initial, inherit</code>.
</span>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="default-value">Default Value</label>
<br>
<input type="text" id="default-value" class="form-control demo" data-defaultValue="#ff6600">
<span class="help-block">
This field has a default value assigned to it, so it will never be empty.
</span>
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="letter-case">Letter Case</label>
<br>
<input type="text" id="letter-case" class="form-control demo" data-letterCase="uppercase" value="#abcdef">
<span class="help-block">
This field will always be uppercase.
</span>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="input-group">Input Groups</label>
<div class="input-group">
<input type="text" id="input-group" class="form-control demo" value="#ff0000"/>
<span class="input-group-btn">
<button class="btn btn-default" type="button">Button</button>
</span>
</div>
<span class="help-block">
Example using Bootstrap's input groups.
</span>
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="more-input-group">More Input Groups</label>
<div class="input-group">
<span class="input-group-addon">Color</span>
<input type="text" id="more-input-group" class="form-control demo" value="#ff0000"/>
<span class="input-group-btn">
<button class="btn btn-default" type="button">Button</button>
</span>
</div>
<span class="help-block">
Input group example with addon.
</span>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="letter-case">Swatches</label>
<br>
<input type="text" id="swatches" class="form-control demo" data-swatches="#ef9a9a|#90caf9|#a5d6a7|#fff59d|#ffcc80|#bcaaa4|#eeeeee|#f44336|#2196f3|#4caf50|#ffeb3b|#ff9800|#795548|#9e9e9e" value="#abcdef">
<span class="help-block">
Example with swatches.
</span>
</div>
</div>
<div class="col-lg-4 col-sm-4 col-12">
<div class="form-group">
<label for="letter-case">Swatches and opacity</label>
<br>
<input type="text" id="swatches" class="form-control demo" data-format="rgb" data-opacity="1" data-swatches="#fff|#000|#f00|#0f0|#00f|#ff0|rgba(0,0,255,0.5)"  value="rgba(14, 206, 235, .5)">
<span class="help-block">
Example with swatches and opacity.
</span>
</div>
</div>
</div>
</div>
</div>
</form>
</body>
</html>

  https://github.com/coldicelion/Simple-Web-Crawler (网络爬虫)

 

https://github.com/shadowsocks

https://github.com/knightliao/disconf-demos-java

https://github.com/yuzukwok/disconf.net (分布式)

https://github.com/microsoft/reactxp

https://github.com/jstedfast/MailKit (邮件)

https://github.com/quartznet/quartznet (任务调度)

https://github.com/JimBobSquarePants/ImageProcessor(图形处理)

https://github.com/ServiceStack/ServiceStack.Redis

https://redis.codeplex.com/SourceControl/latest

https://github.com/StackExchange/StackExchange.Redis

https://github.com/HangfireIO/Hangfire (任务)

https://github.com/mono/taglib-sharp/ (媒体操作)

 

ORM:(开源)

 https://github.com/CollaboratingPlatypus/PetaPoco

https://github.com/StackExchange/Dapper

https://github.com/FransBouma/Massive

https://github.com/markrendle/Simple.Data

https://github.com/docevaad/Chain

 


更多专业前端知识,请上 【猿2048】www.mk2048.com

http://chatgpt.dhexx.cn/article/QTOGTM1b.shtml

相关文章

Flutter 与 React Native 该如何选择

跨平台程序员之间关于 React Native 和 Flutter 的旷日持久的争论越来越白热化了。前几年&#xff0c;React Native 还是开发人员的首选框架&#xff0c;但是自 2017 年 Flutter 发布以来&#xff0c;其已经发展成为 React Native 的一个强有力竞争对手。 最近&#xff0c;随着…

2021年,Flutter 与 React Native该如何选择?

????????关注后回复 “进群” &#xff0c;拉你进程序员交流群???????? 作者 | Wasim Charoliya 译者 | 王强 策划 | 田晓旭 2021 年&#xff0c;跨平台程序员之间关于 React Native 和 Flutter 的旷日持久的争论越来越白热化了。前几年&#xff0c;React Nati…

React Native 三端同构实践

⚠️ 博客中涉及的代码内容可查看 Github: react-native-isomorphism React Native三端同构皆在&#x1f22f;️在不改动 React Native 代码下&#xff0c;公用一套代码架构, 在浏览器中实现同样的展示、交互、功能。 在实际开发过程中, 尤其创业公司, 需求的迭代周期是非常快…

吐血推荐|2万字总结Mac所有应用程序、软件工具和相关资料

现在随着互联网的发展&#xff0c;越来越多的公司都鼓励Mac办公&#xff0c;属实MacOS系统对于我们的工作开发效率有很大提升&#xff0c;所以我们需要收集各种类别非常好用的 Mac 应用程序、软件以及工具。作为一个资深 Mac 用户&#xff0c;我需要它们帮助我快乐、高效的工作…

网易云音乐React Native体系建设与发展

本文作者&#xff1a;章伟东 &#xff08;网易云音乐大前端团队&#xff09; 0.33 历史 17 年 3 月份&#xff0c;为了解决商城性能和用户体验问题&#xff0c;云音乐技术团队组建了一只 4 人 ReactNative 开发小分队&#xff1a;我负责 RN 前端开发&#xff0c;安卓和 iOS 两…

每周分享第 26 期

这里记录过去一周&#xff0c;我看到的值得分享的东西&#xff0c;每周五发布。 Basecamp 是 IT 行业很有名的一家公司&#xff0c;提供团队协作工具&#xff0c;同时也是 Rails on Ruby 框架的创造者。这家公司的特别之处在于&#xff0c;它不仅写软件&#xff0c;还写畅销书&…

爱开源的微软是如何击败 Facebook、Google 成为 GitHub No.1 的?

拥抱开源的微软这几年究竟都做了些什么&#xff1f; 去年今月&#xff0c;我在微软开发者峰会上见到了《设计模式&#xff1a;可复用面向对象软件的基础》联合作者、现任微软技术院士&#xff08;Technical Fellow at Microsoft&#xff09;Erich Gamma&#xff0c;那是我第一次…

跨端与同构开发技术一览

关键词&#xff1a;React Native, uni-app, Flutter ,Tauri, Ionic 和 weex 文章目录 前言跨端技术简史几种常见跨端技术对比小程序的繁荣跨端同构技术uni-appTaroreact-native-webreactxpWeex阿里的RaxRemax去哪儿网的qrn-remax-unir去哪儿网的anuKbone腾讯新一代跨端开发框架…

@开发者,一份微软官方Github上发布的开源项目清单等你签收

最近在倒腾WPF的项目&#xff0c;试着搜一下微软官方提供的WPF Smaples, 结果找到了https://github.com/Microsoft/WPF-Samples. 当然还发现了Cortana相关的开源资料http://microsoft.github.io/UWPQuickStart/docs/challenges/cortana-integration.html和UWP资源http://micros…

React Native 三端同构实战

WeiboGoogle用电子邮件发送本页面 0 React Native 三端&#xff08;Web、iOS、Android&#xff09;同构是指在不改动原 React Native 的代码下&#xff0c;让其在浏览器中运行出和在 React Native 环境下一样的页面。对于使用 React Native 开发的页面&#xff0c;如果又单独为…

reactxp搭建,start:windows运行不起来

1、官网 reactxp 2、VSCode和Visual Studio2019 安装VSCode Visual Studio 下载地址 先不用勾选工作负荷&#xff0c;直接安装 3、安装nvm 访问下载地址下载安装nvm&#xff1a; 百度云分享 官网直装链接 nvm的github发行界面下载nvm-setup.exe GitCode镜像下载nvm-setup…

微软发布ReactXP:方便开发者构建跨平台应用

说起跨平台开发工具&#xff0c;开发者们最先想到的无外乎是 Cordova 和 Xamarin。但是前者无法提供足够令人满意的性能表现&#xff0c;而后者在 Web 开发上心有余而力不足。所以&#xff0c;微软 Skype 团队基于 React JS 和 React Native 开发了一款全新的跨平台开发工具 —…

跨平台技术实践案例: 用 reactxp 重写墨刀的移动端

重新编写&#xff0c;又一次&#xff0c;我们又一次重新编写了移动端应用和移动端网站。要重新编写是一个风险很大的决定&#xff0c;但是其必要性以及它所带来的收益是我们无法拒绝的。这篇文章会分享我们为什么这么做&#xff0c;我们是怎么做的&#xff0c;以及这次重写后为…

ReactXP入门指南

ReactXP入门指南 1.ReactXP介绍 ReactXP使用了React框架&#xff0c;使得开发人员可以使用React开发他们的跨平台任务。 React的理念是“学习一次&#xff0c;写在任何地方”。使用React和React Native&#xff0c;应用程序可以与iOS和Android应用程序共享大部分逻辑&#x…

SfM、VO和SLAM介绍

一家之言&#xff0c;仅作分享&#xff0c;如有不合理或需要改进的地方&#xff0c;欢迎各位讨论。 前言 在自动驾驶地图定位模块的功能开发中&#xff0c;主要研究方向分为三种&#xff1a;建图、里程计、定位。SfM&#xff08;Structure From Motion&#xff09;即 传统三维…

SfM: Structure from motion

SfM Structure from motion (SfM) is the process of estimating the 3-D structure of a scene from a set of 2-D images. 运动结构&#xff08;SfM&#xff09;是根据一组二维图像估计场景的 3-D **结构的过程。 注意Motion是指相机在移动 SFM通常用来建立image structu…

经典/深度SfM有关问题的整理

这篇博客主要是记录一些实践或看论文过程中遇到的一些不好理解的问题及解释。      Q1&#xff1a;SfM里的尺度不变性指的是什么&#xff1f;   A1&#xff1a;一般定义下&#xff0c;尺度不变性是指体系经过尺度变换后&#xff0c;其某一特性不变。比如&#xff0c;特征…

OpenCV实现SfM(一):相机模型

注意&#xff1a;本文中的代码必须使用OpenCV3.0或以上版本进行编译&#xff0c;因为很多函数是3.0以后才加入的。 目录&#xff1a; 文章目录 #SfM介绍 SfM的全称为Structure from Motion&#xff0c;即通过相机的移动来确定目标的空间和几何关系&#xff0c;是三维重建的一种…

Structure From Motion(SFM)入门讲解

概念&#xff1a; Structure From Motion(SFM) 是从一系列包含视觉运动信息的多幅二维图像序列中估计三维结构的技术。 SFM和立体视觉的区别 在立体视觉中&#xff0c;两个相机之间的相对位姿是通过标定靶精确标定出来的&#xff0c;在重建时直接使用三角法进行计算&#x…

[CV] Structure from motion(SFM)- 附我的实现结果

【更新】我的新博客&#xff1a;www.ryuzhihao.cc&#xff0c;当然这个csdn博客也会更新 本文在新博客中的链接&#xff1a;点击打开链接 完成时间&#xff1a;2017年2月27日 博客时间&#xff1a;2017年4月26日 去年&#xff0c;我有幸了解到image-based mode…